Okay so we have the three trees, rooted on rh1988 and ag342.

Things to note here are that the following species get pretty much 0 orthologs. I think a run without them is needed. This will increase the orthologs identified considerably.

And the results of the SCO between percentage speceis.

90% - greater 72 species, SCOs is 0.
85% - greater 68 species, SCOs is 2.
80% - greater 64 species, SCOs is 52.
75% - greater 60 species, SCOs is 164.
70% - greater 56 species, SCOs is 255.
65% - greater 52 species, SCOs is 308.
60% - greater 48 species, SCOs is 355.
55% - greater 44 species, SCOs is 419.
50% - greater 40 species, SCOs is 488.

All Samples

Greater 80% Orthologs

So ortholog > 80% did not work very well. In the RAXML output it consistently could not find the relationship between the outgroups (As can be seen from the chaos at the bottom of the plot).

Greater 75% Orthologs

Greater 70% Orthologs

Removing the Low Orthogorup Species

So this is with the following species removed due to having pretty much no orthogroups.

The orthogroups identified from this analysis, is much better (Scroll to the top to compare with the other analysis).

100% SCO is 1.
90% - greater 61 species, SCOs is 143.
85% - greater 58 species, SCOs is 227.
80% - greater 54 species, SCOs is 285.
75% - greater 51 species, SCOs is 314.
70% - greater 48 species, SCOs is 347.
65% - greater 44 species, SCOs is 416.
60% - greater 41 species, SCOs is 455.
55% - greater 37 species, SCOs is 560.
50% - greater 34 species, SCOs is 622.

I ran this for 90%, 85%, 80%, and 75% and rooted on

Greater 90% Removed Species

So the tree file has 68 species and the metadata has 94 species.

ggtree(g90rem_data, 
       ladderize = T, 
       size = 0.5) +
  geom_tiplab(aes(label = label, 
                  fontface = "italic"),
              size = 3,
              align = F,
              family = "times") +
  xlim(-1, 14) +
  geom_rootedge(rootedge = 1) +
  geom_nodelab(aes(x = branch, label = node),
               size = 4)

Greater 85% Removed Species

Greater 80% Removed Species

Greater 75% Removed Species

So with removing the low orthogroup species this tree is looking way better (from my bioinformatic point, biologically I have no idea sorrrrrry lol).

  • The support for the outgroup and everything else is pretty low which is interesting.
  • As we increase orthogroups (through >x% species) it seems the tree holds the same shape and some of the low bootstraps bump up.
  • Actually, it seems greater 85% seems to give the highest bootstrap support for the trees.

BUSCO QC of Re-made Genomes

Okay so I have run trimming, the prokaryotic and viral contamination (with bit scores 150 and 200), and also removed contigs < 500bp. I used the 150 and 200 input for BUSCO with the fungi_odb12 and ascomycota_odb12 databases.

Things to note 1) The 100 versus 200 does not really impact scores at all. Therfore, lets go with the 200 filter. 2) These were never going to be high because of the DNA extraction and amplification you did. The fact they all similar and around 10% is good. 2) A few things fail/do not assemble, so we can remove these. Note these are also the ones removed from the original analysis due to them having to few orthogroups.

Also not included are the ones which did not pass the cleaning of 500bp
- tutex -> this had contigs only <500, so there is nothing in the cleaned and sorted fasta file.
- ag340 -> this had contigs only <500, so there is nothing in the cleaned and sorted fasta file.
- jt4453 -> this had contigs only <500, so there is nothing in the cleaned and sorted fasta file.

Re-done Gene predictions RAXML

We have a total of 84 species that worked through gene prediction AND (even with ones with <1000 genes) we still got really good SCOs between all species.

I did a preliminary analysis, and the three samples (rh722, rh1006, ag335) made a weird group so we have removed them. Also rooted on three species and this is what it gave.

All SCO with Three Root

So when using the two species Arthur wanted for rooting it was a little weird (i.e. cant find as their is another species in there messing it up). The tree above shows there are three Tiber spinoreticulatum so maybe using all three will fix the rooting problem. (Spoiler, it does). Removed those old weird trees so now it is just the good ones with rooting with the three species.

Number of species: 80 Number of SCO: 69 (niiiiiice) Concatenation length: 42,911 bp

Greater 95% Orthologs

Number of species: 80
Number of SCO: 310
Concatenation length: 202,736 bp

Greater 90% Orthologs

Number of species: 80
Number of SCO: 370
Concatenation length: 239,864 bp

Greater 85% Orthologs

Number of species: 80
Number of SCO: 387
Concatenation length: 250,299 bp

Ben To Do

So I think some of the following steps should be done.

Questions and Answers from Arthur - 22 July 2025

  1. What method was used for library prep and sequencing.
  1. What was the original assembly command with spades ?
  1. Where are the raw reads
  1. What did you sequence: pure cultures, dirty samples, etc. etc.
  1. If dirty samples, did you do a prokaryotic/viral/metazoan cleaning before assembly?
  1. From the data we have, there are species with no orthologs really (see excel).
  1. If I make a spreadsheet with all the names (i.e. ag213, jf1136 etc.) can you fill in the column inormation for me.
  1. Things to remove (i.e. rerun everything from protortho onwards with these removed).
  1. Rooting on the tree will be which species
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKT2theSBzbyB3ZSBoYXZlIHRoZSB0aHJlZSB0cmVlcywgcm9vdGVkIG9uICoqcmgxOTg4KiogYW5kICoqYWczNDIqKi4gIAoKLSBPcnRob2xvZ3MgPiA4MCUgc3BlY2llcyAtPiBjb25jYXRlbmF0aW9uIGxlbmd0aCA9IDIzLDgwNSBicC4gIAotIE9ydGhvbG9ncyA+IDc1JSBzcGVjaWVzIC0+IGNvbmNhdGVuYXRpb24gbGVuZ3RoID0gODAsMjg5IGJwLiAgCi0gT3J0aG9sb2dzID4gNzAlIHNwZWNpZXMgLT4gY29uY2F0ZW5hdGlvbiBsZW5ndGggPSAxMywwMjU0IGJwLiAgCgpUaGluZ3MgdG8gbm90ZSBoZXJlIGFyZSB0aGF0IHRoZSBmb2xsb3dpbmcgc3BlY2llcyBnZXQgcHJldHR5IG11Y2ggMCBvcnRob2xvZ3MuIEkgdGhpbmsgYSBydW4gd2l0aG91dCB0aGVtIGlzIG5lZWRlZC4gVGhpcyB3aWxsIGluY3JlYXNlIHRoZSBvcnRob2xvZ3MgaWRlbnRpZmllZCBjb25zaWRlcmFibHkuIAoKLSBhZzMzNS5uYW1lc19tb2RpZmllZC5mYXMuICAKLSBhZzM0MC5uYW1lc19tb2RpZmllZC5mYXMuICAKLSBhZzM1Mi5uYW1lc19tb2RpZmllZC5mYXMuICAKLSBiYzY0Lm5hbWVzX21vZGlmaWVkLmZhcy4gIAotIGp0MTExNDYubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gdHIxMTcubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gdHI2NC5uYW1lc19tb2RpZmllZC5mYXMuICAKLSB0dXRleC5uYW1lc19tb2RpZmllZC5mYXMuICAKLSB6YjEyMjcubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gemIxNjQ0Lm5hbWVzX21vZGlmaWVkLmZhcy4gIAotIHpiMzQ0MS5uYW1lc19tb2RpZmllZC5mYXMuICAKLSB6YjM5MzUubmFtZXNfbW9kaWZpZWQuZmFzLiAgCgpBbmQgdGhlIHJlc3VsdHMgb2YgdGhlIFNDTyBiZXR3ZWVuIHBlcmNlbnRhZ2Ugc3BlY2Vpcy4gIAoKOTAlIC0gZ3JlYXRlciA3MiBzcGVjaWVzLCBTQ09zIGlzIDAuICAKODUlIC0gZ3JlYXRlciA2OCBzcGVjaWVzLCBTQ09zIGlzIDIuICAKODAlIC0gZ3JlYXRlciA2NCBzcGVjaWVzLCBTQ09zIGlzIDUyLiAgCjc1JSAtIGdyZWF0ZXIgNjAgc3BlY2llcywgU0NPcyBpcyAxNjQuICAKNzAlIC0gZ3JlYXRlciA1NiBzcGVjaWVzLCBTQ09zIGlzIDI1NS4gIAo2NSUgLSBncmVhdGVyIDUyIHNwZWNpZXMsIFNDT3MgaXMgMzA4LiAgCjYwJSAtIGdyZWF0ZXIgNDggc3BlY2llcywgU0NPcyBpcyAzNTUuICAKNTUlIC0gZ3JlYXRlciA0NCBzcGVjaWVzLCBTQ09zIGlzIDQxOS4gIAo1MCUgLSBncmVhdGVyIDQwIHNwZWNpZXMsIFNDT3MgaXMgNDg4LiAgCgpgYGB7ciBsaWJyYXJ5IGxvYWRpbmcsIGluY2x1ZGUgPSBGfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShnZ3RyZWUpCmxpYnJhcnkodHJlZWlvKQpsaWJyYXJ5KHRpZHl0cmVlKQpzZXNzaW9uSW5mbygpCmBgYAoKYGBge3IgbWFraW5nIGNvbGxhcHNlIHdvcmssIGluY2x1ZGUgPSBGfQpub2RlaWQudGJsX3RyZWUgPC0gdXRpbHM6OmdldEZyb21OYW1lc3BhY2UoIm5vZGVpZC50YmxfdHJlZSIsICJ0aWR5dHJlZSIpCnJvb3Rub2RlLnRibF90cmVlIDwtIHV0aWxzOjpnZXRGcm9tTmFtZXNwYWNlKCJyb290bm9kZS50YmxfdHJlZSIsICJ0aWR5dHJlZSIpCm9mZnNwcmluZy50YmxfdHJlZSA8LSB1dGlsczo6Z2V0RnJvbU5hbWVzcGFjZSgib2Zmc3ByaW5nLnRibF90cmVlIiwgInRpZHl0cmVlIikKb2Zmc3ByaW5nLnRibF90cmVlX2l0ZW0gPC0gdXRpbHM6OmdldEZyb21OYW1lc3BhY2UoIi5vZmZzcHJpbmcudGJsX3RyZWVfaXRlbSIsICJ0aWR5dHJlZSIpCmNoaWxkLnRibF90cmVlIDwtIHV0aWxzOjpnZXRGcm9tTmFtZXNwYWNlKCJjaGlsZC50YmxfdHJlZSIsICJ0aWR5dHJlZSIpCnBhcmVudC50YmxfdHJlZSA8LSB1dGlsczo6Z2V0RnJvbU5hbWVzcGFjZSgicGFyZW50LnRibF90cmVlIiwgInRpZHl0cmVlIikKYGBgCgojIyBBbGwgU2FtcGxlcyAKIyMjIEdyZWF0ZXIgODAlIE9ydGhvbG9ncwoKYGBge3IgaW1wb3J0aW5nIGc4MCB0cmVlLCBpbmNsdWRlID0gRn0KcmVhZC5uZXdpY2soZmlsZSA9ICIvVXNlcnMvYmVueW91bmcvTGlicmFyeS9DbG91ZFN0b3JhZ2UvT25lRHJpdmUtVUNCLU8zNjUvcHJvamVjdHMvYXJ0aHVyX3R1Ym1lL3JheG1sX2c4MC9SQXhNTF9iaXBhcnRpdGlvbnMudHVibWVfc2NvZ3JlYXQ4MF8xMDBicyIpIC0+IGc4MF9kYXRhCmc4MF9kYXRhJGVkZ2UubGVuZ3RoIDwtIGc4MF9kYXRhJGVkZ2UubGVuZ3RoICogNzAKYGBgCgpgYGB7ciBnODAgbWFraW5nIHRoZSBub2RlIHNoYXBlcyBhbmQgY29sb3VycywgaW5jbHVkZSA9IEZ9CnRyZWVfZGZfODAgPC0gZm9ydGlmeShnODBfZGF0YSkKCnRyZWVfZGZfODAgPC0gdHJlZV9kZl84MCAlPiUKICBmaWx0ZXIoIWlzVGlwICYgIWlzLm5hKGxhYmVsKSkgJT4lCiAgbXV0YXRlKGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpKSAlPiUKICBmaWx0ZXIoYm9vdHN0cmFwID4gMCkgJT4lIAogIG11dGF0ZSgKICAgIGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpLAogICAgYm9vdF9iaW4gPSBjYXNlX3doZW4oCiAgICAgIGJvb3RzdHJhcCA+PSA5MSB+ICI5MeKAkzEwMCIsCiAgICAgIGJvb3RzdHJhcCA+PSA4MSB+ICI4MeKAkzkwIiwKICAgICAgYm9vdHN0cmFwID49IDcxIH4gIjcx4oCTODAiLAogICAgICBib290c3RyYXAgPj0gNjEgfiAiNjHigJM3MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA1MSB+ICI1MeKAkzYwIiwKICAgICAgYm9vdHN0cmFwID49IDQxIH4gIjQx4oCTNTAiLAogICAgICBib290c3RyYXAgPj0gMzEgfiAiMzHigJM0MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAyMSB+ICIyMeKAkzMwIiwKICAgICAgYm9vdHN0cmFwID49IDExIH4gIjEx4oCTMjAiLAogICAgICBUUlVFIH4gIjDigJMxMCIKICAgICkKICApCiMgVmlldyh0cmVlX2RmXzgwKQoKYmluX2NvbG9ycyA8LSBjKAogICI5MeKAkzEwMCIgPSAiZ3JleTYwIiwKICAiODHigJM5MCIgPSAiZGFya2JsdWUiLAogICI3MeKAkzgwIiA9ICJibHVlIiwKICAiNjHigJM3MCIgPSAiZG9kZ2VyYmx1ZTMiLAogICI1MeKAkzYwIiA9ICJza3libHVlMyIsCiAgIjQx4oCTNTAiID0gImNoYXJ0cmV1c2U0IiwKICAiMzHigJM0MCIgPSAiZ29sZGVucm9kMiIsCiAgIjIx4oCTMzAiID0gIm9yYW5nZSIsCiAgIjEx4oCTMjAiID0gIm9yYW5nZXJlZDIiLAogICIw4oCTMTAiICAgPSAicmVkIgopCmBgYAoKYGBge3IgcGxvdHRpbmcgdGhlIGc4MCB0cmVlLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdndHJlZShnODBfZGF0YSwgbGFkZGVyaXplID0gVCwgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAibW9ubyIpICsKICB4bGltKC0xLCAxNSkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbGFiZWwpLAogICMgICAgICAgICAgICAgIHZqdXN0ID0gLS41LAogICMgICAgICAgICAgICAgIHNpemUgPSAzKSArCiAgZ2VvbV9wb2ludCgKICAgIGRhdGEgPSB0cmVlX2RmXzgwLAogICAgYWVzKHggPSB4LCB5ID0geSwgZmlsbCA9IGJvb3RfYmluKSwKICAgIHNoYXBlID0gMjEsCiAgICBzaXplID0gMi41LAogICAgc3Ryb2tlID0gMC4yLAogICAgY29sb3IgPSAiYmxhY2siICAjIG9wdGlvbmFsIGJvcmRlciBmb3IgdmlzaWJpbGl0eQogICkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJpbl9jb2xvcnMsIAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiQm9vdHN0cmFwICUiKQpgYGAKClNvIG9ydGhvbG9nID4gODAlIGRpZCBub3Qgd29yayB2ZXJ5IHdlbGwuIEluIHRoZSBSQVhNTCBvdXRwdXQgaXQgY29uc2lzdGVudGx5IGNvdWxkIG5vdCBmaW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgb3V0Z3JvdXBzIChBcyBjYW4gYmUgc2VlbiBmcm9tIHRoZSBjaGFvcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBwbG90KS4gCgoKIyMjIEdyZWF0ZXIgNzUlIE9ydGhvbG9ncwoKYGBge3IgaW1wb3J0aW5nIGc3NSB0cmVlLCBpbmNsdWRlID0gRn0KcmVhZC5uZXdpY2soZmlsZSA9ICIvVXNlcnMvYmVueW91bmcvTGlicmFyeS9DbG91ZFN0b3JhZ2UvT25lRHJpdmUtVUNCLU8zNjUvcHJvamVjdHMvYXJ0aHVyX3R1Ym1lL3JheG1sX2c3NS9SQXhNTF9iaXBhcnRpdGlvbnMudHVibWVfc2NvZ3JlYXRnNzVfMTAwYnMiKSAtPiBnNzVfZGF0YQpnNzVfZGF0YSRlZGdlLmxlbmd0aCA8LSBnNzVfZGF0YSRlZGdlLmxlbmd0aCAqIDcwCmBgYAoKYGBge3IgZzc1IG1ha2luZyB0aGUgbm9kZSBzaGFwZXMgYW5kIGNvbG91cnMsIGluY2x1ZGUgPSBGfQp0cmVlX2RmXzc1IDwtIGZvcnRpZnkoZzc1X2RhdGEpCgp0cmVlX2RmXzc1IDwtIHRyZWVfZGZfNzUgJT4lCiAgZmlsdGVyKCFpc1RpcCAmICFpcy5uYShsYWJlbCkpICU+JQogIG11dGF0ZShib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSkgJT4lCiAgZmlsdGVyKGJvb3RzdHJhcCA+IDApICU+JSAKICBtdXRhdGUoCiAgICBib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSwKICAgIGJvb3RfYmluID0gY2FzZV93aGVuKAogICAgICBib290c3RyYXAgPj0gOTEgfiAiOTHigJMxMDAiLAogICAgICBib290c3RyYXAgPj0gODEgfiAiODHigJM5MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA3MSB+ICI3MeKAkzgwIiwKICAgICAgYm9vdHN0cmFwID49IDYxIH4gIjYx4oCTNzAiLAogICAgICBib290c3RyYXAgPj0gNTEgfiAiNTHigJM2MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA0MSB+ICI0MeKAkzUwIiwKICAgICAgYm9vdHN0cmFwID49IDMxIH4gIjMx4oCTNDAiLAogICAgICBib290c3RyYXAgPj0gMjEgfiAiMjHigJMzMCIsCiAgICAgIGJvb3RzdHJhcCA+PSAxMSB+ICIxMeKAkzIwIiwKICAgICAgVFJVRSB+ICIw4oCTMTAiCiAgICApCiAgKQojIFZpZXcodHJlZV9kZl83NSkKCmJpbl9jb2xvcnMgPC0gYygKICAiOTHigJMxMDAiID0gImdyZXk2MCIsCiAgIjgx4oCTOTAiID0gImRhcmtibHVlIiwKICAiNzHigJM4MCIgPSAiYmx1ZSIsCiAgIjYx4oCTNzAiID0gImRvZGdlcmJsdWUzIiwKICAiNTHigJM2MCIgPSAic2t5Ymx1ZTMiLAogICI0MeKAkzUwIiA9ICJjaGFydHJldXNlNCIsCiAgIjMx4oCTNDAiID0gImdvbGRlbnJvZDIiLAogICIyMeKAkzMwIiA9ICJvcmFuZ2UiLAogICIxMeKAkzIwIiA9ICJvcmFuZ2VyZWQyIiwKICAiMOKAkzEwIiAgID0gInJlZCIKKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHRoZSBnNzUgdHJlZSwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQgPSAxNSwgZWNobyA9IEZ9CmdndHJlZShnNzVfZGF0YSwgbGFkZGVyaXplID0gVCwgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAibW9ubyIpICsKICB4bGltKC0xLCAxMykgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbGFiZWwpLAogICMgICAgICAgICAgICAgIHZqdXN0ID0gLS41LAogICMgICAgICAgICAgICAgIHNpemUgPSAzKSArCiAgZ2VvbV9wb2ludCgKICAgIGRhdGEgPSB0cmVlX2RmXzc1LAogICAgYWVzKHggPSB4LCB5ID0geSwgZmlsbCA9IGJvb3RfYmluKSwKICAgIHNoYXBlID0gMjEsCiAgICBzaXplID0gMi41LAogICAgc3Ryb2tlID0gMC4yLAogICAgY29sb3IgPSAiYmxhY2siICAjIG9wdGlvbmFsIGJvcmRlciBmb3IgdmlzaWJpbGl0eQogICkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJpbl9jb2xvcnMsIAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiQm9vdHN0cmFwICUiKQpgYGAKCiMjIyBHcmVhdGVyIDcwJSBPcnRob2xvZ3MKCmBgYHtyIGltcG9ydGluZyBnNzAgdHJlZSwgaW5jbHVkZSA9IEZ9CnJlYWQubmV3aWNrKGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS9yYXhtbF9nNzAvUkF4TUxfYmlwYXJ0aXRpb25zLnR1Ym1lX3Njb2dyZWF0ZzcwXzEwMGJzIikgLT4gZzcwX2RhdGEKZzcwX2RhdGEkZWRnZS5sZW5ndGggPC0gZzcwX2RhdGEkZWRnZS5sZW5ndGggKiA3MApgYGAKCmBgYHtyIGc3MCBtYWtpbmcgdGhlIG5vZGUgc2hhcGVzIGFuZCBjb2xvdXJzLCBpbmNsdWRlID0gRn0KdHJlZV9kZl83MCA8LSBmb3J0aWZ5KGc3MF9kYXRhKQoKdHJlZV9kZl83MCA8LSB0cmVlX2RmXzcwICU+JQogIGZpbHRlcighaXNUaXAgJiAhaXMubmEobGFiZWwpKSAlPiUKICBtdXRhdGUoYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCkpICU+JQogIGZpbHRlcihib290c3RyYXAgPiAwKSAlPiUgCiAgbXV0YXRlKAogICAgYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCksCiAgICBib290X2JpbiA9IGNhc2Vfd2hlbigKICAgICAgYm9vdHN0cmFwID49IDkxIH4gIjkx4oCTMTAwIiwKICAgICAgYm9vdHN0cmFwID49IDgxIH4gIjgx4oCTOTAiLAogICAgICBib290c3RyYXAgPj0gNzEgfiAiNzHigJM4MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA2MSB+ICI2MeKAkzcwIiwKICAgICAgYm9vdHN0cmFwID49IDUxIH4gIjUx4oCTNjAiLAogICAgICBib290c3RyYXAgPj0gNDEgfiAiNDHigJM1MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAzMSB+ICIzMeKAkzQwIiwKICAgICAgYm9vdHN0cmFwID49IDIxIH4gIjIx4oCTMzAiLAogICAgICBib290c3RyYXAgPj0gMTEgfiAiMTHigJMyMCIsCiAgICAgIFRSVUUgfiAiMOKAkzEwIgogICAgKQogICkKIyBWaWV3KHRyZWVfZGZfNzApCgpiaW5fY29sb3JzIDwtIGMoCiAgIjkx4oCTMTAwIiA9ICJncmV5NjAiLAogICI4MeKAkzkwIiA9ICJkYXJrYmx1ZSIsCiAgIjcx4oCTODAiID0gImJsdWUiLAogICI2MeKAkzcwIiA9ICJkb2RnZXJibHVlMyIsCiAgIjUx4oCTNjAiID0gInNreWJsdWUzIiwKICAiNDHigJM1MCIgPSAiY2hhcnRyZXVzZTQiLAogICIzMeKAkzQwIiA9ICJnb2xkZW5yb2QyIiwKICAiMjHigJMzMCIgPSAib3JhbmdlIiwKICAiMTHigJMyMCIgPSAib3JhbmdlcmVkMiIsCiAgIjDigJMxMCIgICA9ICJyZWQiCikKYGBgCgpgYGB7ciBwbG90dGluZyB0aGUgZzcwIHRyZWUsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTUsIGVjaG8gPSBGfQpnZ3RyZWUoZzcwX2RhdGEsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoc2l6ZSA9IDMsIAogICAgICAgICAgICAgIGFsaWduID0gRiwgCiAgICAgICAgICAgICBmYW1pbHkgPSAibW9ubyIpICsKICB4bGltKC0xLCAxMikgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHg9YnJhbmNoLCBsYWJlbCA9IGxhYmVsKSwgCiAgIyAgICAgICAgICAgICAgdmp1c3Q9LS41LCBzaXplPTMpCiAgICBnZW9tX3BvaW50KAogICAgZGF0YSA9IHRyZWVfZGZfNzAsCiAgICBhZXMoeCA9IHgsIHkgPSB5LCBmaWxsID0gYm9vdF9iaW4pLAogICAgc2hhcGUgPSAyMSwKICAgIHNpemUgPSAyLjUsCiAgICBzdHJva2UgPSAwLjIsCiAgICBjb2xvciA9ICJibGFjayIgICMgb3B0aW9uYWwgYm9yZGVyIGZvciB2aXNpYmlsaXR5CiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYmluX2NvbG9ycywgCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCb290c3RyYXAgJSIpCmBgYAoKCiMjIFJlbW92aW5nIHRoZSBMb3cgT3J0aG9nb3J1cCBTcGVjaWVzIAoKU28gdGhpcyBpcyB3aXRoIHRoZSBmb2xsb3dpbmcgc3BlY2llcyByZW1vdmVkIGR1ZSB0byBoYXZpbmcgcHJldHR5IG11Y2ggbm8gb3J0aG9ncm91cHMuICAKCi0gYWczMzUubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gYWczNDAubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gYWczNTIubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gYmM2NC5uYW1lc19tb2RpZmllZC5mYXMuICAKLSBqdDExMTQ2Lm5hbWVzX21vZGlmaWVkLmZhcy4gIAotIHRyMTE3Lm5hbWVzX21vZGlmaWVkLmZhcy4gIAotIHRyNjQubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gdHV0ZXgubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gemIxMjI3Lm5hbWVzX21vZGlmaWVkLmZhcy4gIAotIHpiMTY0NC5uYW1lc19tb2RpZmllZC5mYXMuICAKLSB6YjM0NDEubmFtZXNfbW9kaWZpZWQuZmFzLiAgCi0gemIzOTM1Lm5hbWVzX21vZGlmaWVkLmZhcy4gCgpUaGUgb3J0aG9ncm91cHMgaWRlbnRpZmllZCBmcm9tIHRoaXMgYW5hbHlzaXMsIGlzIG11Y2ggYmV0dGVyIChTY3JvbGwgdG8gdGhlIHRvcCB0byBjb21wYXJlIHdpdGggdGhlIG90aGVyIGFuYWx5c2lzKS4gIAoKMTAwJSBTQ08gaXMgMS4gIAo5MCUgLSBncmVhdGVyIDYxIHNwZWNpZXMsIFNDT3MgaXMgMTQzLiAgCjg1JSAtIGdyZWF0ZXIgNTggc3BlY2llcywgU0NPcyBpcyAyMjcuICAKODAlIC0gZ3JlYXRlciA1NCBzcGVjaWVzLCBTQ09zIGlzIDI4NS4gIAo3NSUgLSBncmVhdGVyIDUxIHNwZWNpZXMsIFNDT3MgaXMgMzE0LiAgCjcwJSAtIGdyZWF0ZXIgNDggc3BlY2llcywgU0NPcyBpcyAzNDcuICAKNjUlIC0gZ3JlYXRlciA0NCBzcGVjaWVzLCBTQ09zIGlzIDQxNi4gIAo2MCUgLSBncmVhdGVyIDQxIHNwZWNpZXMsIFNDT3MgaXMgNDU1LiAgCjU1JSAtIGdyZWF0ZXIgMzcgc3BlY2llcywgU0NPcyBpcyA1NjAuICAKNTAlIC0gZ3JlYXRlciAzNCBzcGVjaWVzLCBTQ09zIGlzIDYyMi4gIAoKSSByYW4gdGhpcyBmb3IgOTAlLCA4NSUsIDgwJSwgYW5kIDc1JSBhbmQgcm9vdGVkIG9uIAoKLSAxNDMgT3J0aG9sb2dzID4gOTAlIHNwZWNpZXMgLT4gY29uY2F0ZW5hdGlvbiBsZW5ndGggPSA3MSwzODMgYnAKLSAyMjcgT3J0aG9sb2dzID4gODUlIHNwZWNpZXMgLT4gY29uY2F0ZW5hdGlvbiBsZW5ndGggPSAxMjAsNzc1IGJwCi0gMjg1IE9ydGhvbG9ncyA+IDgwJSBzcGVjaWVzIC0+IGNvbmNhdGVuYXRpb24gbGVuZ3RoID0gMTU1LDY2NiBicAotIDMxNCBPcnRob2xvZ3MgPiA4MCUgc3BlY2llcyAtPiBjb25jYXRlbmF0aW9uIGxlbmd0aCA9IDE2OSw0NzYgYnAKCmBgYHtyIHRyZWUgbWV0YWRhdGEgZm9yIGFsbCwgaW5jbHVkZSA9IEZ9CnJlYWQuY3N2KGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS90cmVlX21ldGFkYXRhLmNzdiIpICU+JSAKICBtdXRhdGUoYWNyb3NzKHdoZXJlKGlzLmNoYXJhY3RlciksIH5uYV9pZiguLCAiIikpKSAtPiB0cmVlX21kCiMgVmlldyh0cmVlX21kKQpgYGAKCgojIyMgR3JlYXRlciA5MCUgUmVtb3ZlZCBTcGVjaWVzCgpgYGB7ciBpbXBvcnRpbmcgZzkwcmVtIHRyZWUsIGluY2x1ZGUgPSBGfQpyZWFkLm5ld2ljayhmaWxlID0gIi9Vc2Vycy9iZW55b3VuZy9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9PbmVEcml2ZS1VQ0ItTzM2NS9wcm9qZWN0cy9hcnRodXJfdHVibWUvcmF4bWxfZzkwcmVtL1JBeE1MX2JpcGFydGl0aW9ucy50dWJtZV9zY29ncmVhdDkwcmVtXzEwMGJzIikgLT4gZzkwcmVtX2RhdGEKZzkwcmVtX2RhdGEkZWRnZS5sZW5ndGggPC0gZzkwcmVtX2RhdGEkZWRnZS5sZW5ndGggKiAxMjAKYGBgCgpTbyB0aGUgdHJlZSBmaWxlIGhhcyA2OCBzcGVjaWVzIGFuZCB0aGUgbWV0YWRhdGEgaGFzIDk0IHNwZWNpZXMuIAoKYGBge3IgYW5ub3RhdGluZyB0cmVlIGRhdGEgZzkwcmVtLCBpbmNsdWRlID0gRn0KIyMgZ2V0dGluZyB0aGUgY29ycmVjdCA2OCBzYW1wbGVzIGZyb20gbWV0YWRhdGEKZzkwcmVtX2RhdGEgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBmaWx0ZXIoc3RyX2RldGVjdChsYWJlbCwgIl5bQS1aYS16XSIpKSAlPiUgCiAgZHBseXI6OnNlbGVjdChsYWJlbCkgLT4gc2FtcGxlc19nOTAKCiMjIGNvbWJpbmluZyBtZXRhZGF0YSB3aXRoIHRyZWUgb2JqZWN0LiAKZzkwcmVtX2RhdGEgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBmdWxsX2pvaW4odHJlZV9tZCAlPiUgCiAgICAgICAgICAgICAgZHBseXI6OmZpbHRlcihzYW1wbGUgJWluJSBzYW1wbGVzX2c5MCRsYWJlbCksIAogICAgICAgICAgICBqb2luX2J5KGxhYmVsID09IHNhbXBsZSkpICU+JSAKICBhcy50cmVlZGF0YSgpIC0+IGc5MHJlbV9kYXRhCmBgYAoKYGBge3IgZzkwcmVtIG1ha2luZyB0aGUgbm9kZSBzaGFwZXMgYW5kIGNvbG91cnMsIGluY2x1ZGUgPSBGfQp0cmVlX2RmX2c5MHJlbSA8LSBmb3J0aWZ5KGc5MHJlbV9kYXRhKQoKdHJlZV9kZl9nOTByZW0gPC0gdHJlZV9kZl9nOTByZW0gJT4lCiAgZmlsdGVyKCFpc1RpcCAmICFpcy5uYShsYWJlbCkpICU+JQogIG11dGF0ZShib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSkgJT4lCiAgZmlsdGVyKGJvb3RzdHJhcCA+IDApICU+JSAKICBtdXRhdGUoCiAgICBib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSwKICAgIGJvb3RfYmluID0gY2FzZV93aGVuKAogICAgICBib290c3RyYXAgPj0gOTEgfiAiOTHigJMxMDAiLAogICAgICBib290c3RyYXAgPj0gODEgfiAiODHigJM5MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA3MSB+ICI3MeKAkzgwIiwKICAgICAgYm9vdHN0cmFwID49IDYxIH4gIjYx4oCTNzAiLAogICAgICBib290c3RyYXAgPj0gNTEgfiAiNTHigJM2MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA0MSB+ICI0MeKAkzUwIiwKICAgICAgYm9vdHN0cmFwID49IDMxIH4gIjMx4oCTNDAiLAogICAgICBib290c3RyYXAgPj0gMjEgfiAiMjHigJMzMCIsCiAgICAgIGJvb3RzdHJhcCA+PSAxMSB+ICIxMeKAkzIwIiwKICAgICAgVFJVRSB+ICIw4oCTMTAiCiAgICApCiAgKQojIFZpZXcodHJlZV9kZl84MCkKCmJpbl9jb2xvcnMgPC0gYygKICAiOTHigJMxMDAiID0gImdyZXk2MCIsCiAgIjgx4oCTOTAiID0gImRhcmtibHVlIiwKICAiNzHigJM4MCIgPSAiYmx1ZSIsCiAgIjYx4oCTNzAiID0gImRvZGdlcmJsdWUzIiwKICAiNTHigJM2MCIgPSAic2t5Ymx1ZTMiLAogICI0MeKAkzUwIiA9ICJjaGFydHJldXNlNCIsCiAgIjMx4oCTNDAiID0gImdvbGRlbnJvZDIiLAogICIyMeKAkzMwIiA9ICJvcmFuZ2UiLAogICIxMeKAkzIwIiA9ICJvcmFuZ2VyZWQyIiwKICAiMOKAkzEwIiAgID0gInJlZCIKKQpgYGAKCmBgYHtyIGdldHRpbmcgbm9kZWxhYnMgZm9yIGJldHRlciBwbG90LCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1fQpnZ3RyZWUoZzkwcmVtX2RhdGEsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gbGFiZWwsIAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICAgICAgICBzaXplID0gMywKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE0KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbm9kZSksCiAgICAgICAgICAgICAgIHNpemUgPSA0KQpgYGAKCmBgYHtyIG1ha2luZyBzYW1wbGVzIGJvbGQgdGhhdCBhcmUgaW4gd2VpcmQgcGxhY2VzIGc5MHJlbSwgaW5jbHVkZSA9IEZ9CmhpZ2hsaWdodF9zYW1wbGVzIDwtIGMoImp0MTMyMjQiLCAidms0NTM4IiwgImFtMTEyNiIsICJtZXMxNDE4IikKCmc5MHJlbV9kYXRhICU+JSAKICBhc190aWJibGUoKSAlPiUgCiAgbXV0YXRlKGhpZ2hsaWdodCA9IGxhYmVsICVpbiUgaGlnaGxpZ2h0X3NhbXBsZXMpICU+JSAKICBhcy50cmVlZGF0YSgpIC0+IGc5MHJlbV9kYXRhCmBgYAoKYGBge3IgcGxvdHRpbmcgdGhlIGc5MHJlbSB0cmVlLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdndHJlZShnOTByZW1fZGF0YSwgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBHZW51c19zcGVjaWVzLCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSBpZmVsc2UoaGlnaGxpZ2h0LCAiYm9sZC5pdGFsaWMiLCAiaXRhbGljIikpLAogICAgICAgICAgICAgIHNpemUgPSA0LAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTUpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogICMgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IGxhYmVsKSwKICAjICAgICAgICAgICAgICB2anVzdCA9IC0uNSwKICAjICAgICAgICAgICAgICBzaXplID0gMykgKwogIGdlb21fcG9pbnQoCiAgICBkYXRhID0gdHJlZV9kZl9nOTByZW0sCiAgICBhZXMoeCA9IHgsIHkgPSB5LCBmaWxsID0gYm9vdF9iaW4pLAogICAgc2hhcGUgPSAyMSwKICAgIHNpemUgPSAyLjUsCiAgICBzdHJva2UgPSAwLjIsCiAgICBjb2xvciA9ICJibGFjayIgICMgb3B0aW9uYWwgYm9yZGVyIGZvciB2aXNpYmlsaXR5CiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYmluX2NvbG9ycywgCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCb290c3RyYXAgJSIpICsKICAjIyBFdXJvcGUgTjEwNSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDEwNSwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAxLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTA1LAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKwogICMjIEFzaWEgTjk2IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gOTYsCiAgICBsYWJlbCA9ICJBc2lhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuNSwKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDk2LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgRXVyb3BlIE4xMDMgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMDMsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4xLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTAzLAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKwogICMjIE5vcnRoIEFtZXJpY2EgTjExNSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDExOSwKICAgIGxhYmVsID0gIk5vcnRoIEFtZXJpY2EiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS45LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTE5LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArIAogICAgIyMgTm9ydGggQW1lcmljYSBONzIgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSA3MiwKICAgIGxhYmVsID0gIk5vcnRoIEFtZXJpY2EiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4xLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gNzIsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKQpgYGAKCgojIyMgR3JlYXRlciA4NSUgUmVtb3ZlZCBTcGVjaWVzCgpgYGB7ciBpbXBvcnRpbmcgZzg1cmVtIHRyZWUsIGluY2x1ZGUgPSBGfQpyZWFkLm5ld2ljayhmaWxlID0gIi9Vc2Vycy9iZW55b3VuZy9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9PbmVEcml2ZS1VQ0ItTzM2NS9wcm9qZWN0cy9hcnRodXJfdHVibWUvcmF4bWxfZzg1cmVtL1JBeE1MX2JpcGFydGl0aW9ucy50dWJtZV9zY29ncmVhdDg1cmVtXzEwMGJzIikgLT4gZzg1cmVtX2RhdGEKZzg1cmVtX2RhdGEkZWRnZS5sZW5ndGggPC0gZzg1cmVtX2RhdGEkZWRnZS5sZW5ndGggKiAxMjAKYGBgCgpgYGB7ciBhbm5vdGF0aW5nIHRyZWUgZGF0YSBnODVyZW0sIGluY2x1ZGUgPSBGfQojIyBnZXR0aW5nIHRoZSBjb3JyZWN0IDY4IHNhbXBsZXMgZnJvbSBtZXRhZGF0YQpnODVyZW1fZGF0YSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIGZpbHRlcihzdHJfZGV0ZWN0KGxhYmVsLCAiXltBLVphLXpdIikpICU+JSAKICBkcGx5cjo6c2VsZWN0KGxhYmVsKSAtPiBzYW1wbGVzX2c4NQoKIyMgY29tYmluaW5nIG1ldGFkYXRhIHdpdGggdHJlZSBvYmplY3QuIApnODVyZW1fZGF0YSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIGZ1bGxfam9pbih0cmVlX21kICU+JSAKICAgICAgICAgICAgICBkcGx5cjo6ZmlsdGVyKHNhbXBsZSAlaW4lIHNhbXBsZXNfZzg1JGxhYmVsKSwgCiAgICAgICAgICAgIGpvaW5fYnkobGFiZWwgPT0gc2FtcGxlKSkgJT4lIAogIGFzLnRyZWVkYXRhKCkgLT4gZzg1cmVtX2RhdGEKYGBgCgpgYGB7ciBnODVyZW0gbWFraW5nIHRoZSBub2RlIHNoYXBlcyBhbmQgY29sb3VycywgaW5jbHVkZSA9IEZ9CnRyZWVfZGZfZzg1cmVtIDwtIGZvcnRpZnkoZzg1cmVtX2RhdGEpCgp0cmVlX2RmX2c4NXJlbSA8LSB0cmVlX2RmX2c4NXJlbSAlPiUKICBmaWx0ZXIoIWlzVGlwICYgIWlzLm5hKGxhYmVsKSkgJT4lCiAgbXV0YXRlKGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpKSAlPiUKICBmaWx0ZXIoYm9vdHN0cmFwID4gMCkgJT4lIAogIG11dGF0ZSgKICAgIGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpLAogICAgYm9vdF9iaW4gPSBjYXNlX3doZW4oCiAgICAgIGJvb3RzdHJhcCA+PSA5MSB+ICI5MeKAkzEwMCIsCiAgICAgIGJvb3RzdHJhcCA+PSA4MSB+ICI4MeKAkzkwIiwKICAgICAgYm9vdHN0cmFwID49IDcxIH4gIjcx4oCTODAiLAogICAgICBib290c3RyYXAgPj0gNjEgfiAiNjHigJM3MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA1MSB+ICI1MeKAkzYwIiwKICAgICAgYm9vdHN0cmFwID49IDQxIH4gIjQx4oCTNTAiLAogICAgICBib290c3RyYXAgPj0gMzEgfiAiMzHigJM0MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAyMSB+ICIyMeKAkzMwIiwKICAgICAgYm9vdHN0cmFwID49IDExIH4gIjEx4oCTMjAiLAogICAgICBUUlVFIH4gIjDigJMxMCIKICAgICkKICApCiMgVmlldyh0cmVlX2RmXzgwKQoKYmluX2NvbG9ycyA8LSBjKAogICI5MeKAkzEwMCIgPSAiZ3JleTYwIiwKICAiODHigJM5MCIgPSAiZGFya2JsdWUiLAogICI3MeKAkzgwIiA9ICJibHVlIiwKICAiNjHigJM3MCIgPSAiZG9kZ2VyYmx1ZTMiLAogICI1MeKAkzYwIiA9ICJza3libHVlMyIsCiAgIjQx4oCTNTAiID0gImNoYXJ0cmV1c2U0IiwKICAiMzHigJM0MCIgPSAiZ29sZGVucm9kMiIsCiAgIjIx4oCTMzAiID0gIm9yYW5nZSIsCiAgIjEx4oCTMjAiID0gIm9yYW5nZXJlZDIiLAogICIw4oCTMTAiICAgPSAicmVkIgopCmBgYAoKYGBge3IgZ2V0dGluZyBub2RlbGFicyBmb3IgYmV0dGVyIHBsb3QgZzg1LCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBpbmNsdWRlID0gRn0KZ2d0cmVlKGc4NXJlbV9kYXRhLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IENvbnRpbmVudCwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTQpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCmBgYAoKYGBge3IgbWFraW5nIHNhbXBsZXMgYm9sZCB0aGF0IGFyZSBpbiB3ZWlyZCBwbGFjZXMgZzg1cmVtLCBpbmNsdWRlID0gRn0KaGlnaGxpZ2h0X3NhbXBsZXMgPC0gYygianQxMzIyNCIsICJ2azQ1MzgiLCAiYW0xMTI2IiwgIm1lczE0MTgiLCAianQzNjI2OCIpCgpnODVyZW1fZGF0YSAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIG11dGF0ZShoaWdobGlnaHQgPSBsYWJlbCAlaW4lIGhpZ2hsaWdodF9zYW1wbGVzKSAlPiUgCiAgYXMudHJlZWRhdGEoKSAtPiBnODVyZW1fZGF0YQpgYGAKCmBgYHtyIHBsb3R0aW5nIHRoZSBnODVyZW0gdHJlZSwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQgPSAxNSwgZWNobyA9IEYsIHJlc3VsdHM9J2hpZGUnfQpnZ3RyZWUoZzg1cmVtX2RhdGEsIGxhZGRlcml6ZSA9IFQsIHNpemUgPSAwLjUpICsKICAgIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IEdlbnVzX3NwZWNpZXMsIAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9IGlmZWxzZShoaWdobGlnaHQsICJib2xkLml0YWxpYyIsICJpdGFsaWMiKSksCiAgICAgICAgICAgICAgc2l6ZSA9IDQsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxNikgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbGFiZWwpLAogICMgICAgICAgICAgICAgIHZqdXN0ID0gLS41LAogICMgICAgICAgICAgICAgIHNpemUgPSAzKSArCiAgZ2VvbV9wb2ludCgKICAgIGRhdGEgPSB0cmVlX2RmX2c4NXJlbSwKICAgIGFlcyh4ID0geCwgeSA9IHksIGZpbGwgPSBib290X2JpbiksCiAgICBzaGFwZSA9IDIxLAogICAgc2l6ZSA9IDIuNSwKICAgIHN0cm9rZSA9IDAuMiwKICAgIGNvbG9yID0gImJsYWNrIiAgIyBvcHRpb25hbCBib3JkZXIgZm9yIHZpc2liaWxpdHkKICApICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBiaW5fY29sb3JzLCAKICAgICAgICAgICAgICAgICAgICBuYW1lID0gIkJvb3RzdHJhcCAlIikgKwogICMjIEV1cm9wZSBOMTExIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTExLAogICAgbGFiZWwgPSAiRXVyb3BlIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuMiwKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDExMSwKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLCAKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBBc2lhIE4xMjYgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMjYsCiAgICBsYWJlbCA9ICJBc2lhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuNywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDEyNiwKICAgIGZpbGwgPSAiZ3JleTYwIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKwogICMjIEV1cm9wZSBOMTMzIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTMzLAogICAgbGFiZWwgPSAiRXVyb3BlIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuMywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDEzMywKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLCAKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBOb3J0aCBBbWVyaWNhIE45MiBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDkyLAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAyLjEsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSA5MiwKICAgIGZpbGwgPSAiZ3JleTYwIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKyAKICAjIyBOb3J0aCBBbWVyaWNhIE43MiBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDcyLAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAxLjIsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSA3MiwKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLCAKICAgIHRvLmJvdHRvbSA9IFQKICApCmBgYAoKCiMjIyBHcmVhdGVyIDgwJSBSZW1vdmVkIFNwZWNpZXMKCmBgYHtyIGltcG9ydGluZyBnODByZW0gdHJlZSwgaW5jbHVkZSA9IEZ9CnJlYWQubmV3aWNrKGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS9yYXhtbF9nODByZW0vUkF4TUxfYmlwYXJ0aXRpb25zLnR1Ym1lX3Njb2dyZWF0ODByZW1fMTAwYnMiKSAtPiBnODByZW1fZGF0YQpnODByZW1fZGF0YSRlZGdlLmxlbmd0aCA8LSBnODByZW1fZGF0YSRlZGdlLmxlbmd0aCAqIDEyMApgYGAKCmBgYHtyIGFubm90YXRpbmcgdHJlZSBkYXRhIGc4MHJlbSwgaW5jbHVkZSA9IEZ9CiMjIGdldHRpbmcgdGhlIGNvcnJlY3QgNjggc2FtcGxlcyBmcm9tIG1ldGFkYXRhCmc4MHJlbV9kYXRhICU+JSAKICBhc190aWJibGUoKSAlPiUgCiAgZmlsdGVyKHN0cl9kZXRlY3QobGFiZWwsICJeW0EtWmEtel0iKSkgJT4lIAogIGRwbHlyOjpzZWxlY3QobGFiZWwpIC0+IHNhbXBsZXNfZzgwCgojIyBjb21iaW5pbmcgbWV0YWRhdGEgd2l0aCB0cmVlIG9iamVjdC4gCmc4MHJlbV9kYXRhICU+JSAKICBhc190aWJibGUoKSAlPiUgCiAgZnVsbF9qb2luKHRyZWVfbWQgJT4lIAogICAgICAgICAgICAgIGRwbHlyOjpmaWx0ZXIoc2FtcGxlICVpbiUgc2FtcGxlc19nODAkbGFiZWwpLCAKICAgICAgICAgICAgam9pbl9ieShsYWJlbCA9PSBzYW1wbGUpKSAlPiUgCiAgYXMudHJlZWRhdGEoKSAtPiBnODByZW1fZGF0YQpgYGAKCmBgYHtyIGc4MHJlbSBtYWtpbmcgdGhlIG5vZGUgc2hhcGVzIGFuZCBjb2xvdXJzLCBpbmNsdWRlID0gRn0KdHJlZV9kZl9nODByZW0gPC0gZm9ydGlmeShnODByZW1fZGF0YSkKCnRyZWVfZGZfZzgwcmVtIDwtIHRyZWVfZGZfZzgwcmVtICU+JQogIGZpbHRlcighaXNUaXAgJiAhaXMubmEobGFiZWwpKSAlPiUKICBtdXRhdGUoYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCkpICU+JQogIGZpbHRlcihib290c3RyYXAgPiAwKSAlPiUgCiAgbXV0YXRlKAogICAgYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCksCiAgICBib290X2JpbiA9IGNhc2Vfd2hlbigKICAgICAgYm9vdHN0cmFwID49IDkxIH4gIjkx4oCTMTAwIiwKICAgICAgYm9vdHN0cmFwID49IDgxIH4gIjgx4oCTOTAiLAogICAgICBib290c3RyYXAgPj0gNzEgfiAiNzHigJM4MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA2MSB+ICI2MeKAkzcwIiwKICAgICAgYm9vdHN0cmFwID49IDUxIH4gIjUx4oCTNjAiLAogICAgICBib290c3RyYXAgPj0gNDEgfiAiNDHigJM1MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAzMSB+ICIzMeKAkzQwIiwKICAgICAgYm9vdHN0cmFwID49IDIxIH4gIjIx4oCTMzAiLAogICAgICBib290c3RyYXAgPj0gMTEgfiAiMTHigJMyMCIsCiAgICAgIFRSVUUgfiAiMOKAkzEwIgogICAgKQogICkKIyBWaWV3KHRyZWVfZGZfZzgwcmVtKQoKYmluX2NvbG9ycyA8LSBjKAogICI5MeKAkzEwMCIgPSAiZ3JleTYwIiwKICAiODHigJM5MCIgPSAiZGFya2JsdWUiLAogICI3MeKAkzgwIiA9ICJibHVlIiwKICAiNjHigJM3MCIgPSAiZG9kZ2VyYmx1ZTMiLAogICI1MeKAkzYwIiA9ICJza3libHVlMyIsCiAgIjQx4oCTNTAiID0gImNoYXJ0cmV1c2U0IiwKICAiMzHigJM0MCIgPSAiZ29sZGVucm9kMiIsCiAgIjIx4oCTMzAiID0gIm9yYW5nZSIsCiAgIjEx4oCTMjAiID0gIm9yYW5nZXJlZDIiLAogICIw4oCTMTAiICAgPSAicmVkIgopCmBgYAoKYGBge3IgZ2V0dGluZyBub2RlbGFicyBmb3IgYmV0dGVyIHBsb3QgZzgwLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBpbmNsdWRlID0gRn0KZ2d0cmVlKGc4MHJlbV9kYXRhLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IExvY2F0aW9uLCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgc2l6ZSA9IDMsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxNCkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IG5vZGUpLAogICAgICAgICAgICAgICBzaXplID0gNCkKYGBgCgpgYGB7ciBtYWtpbmcgc2FtcGxlcyBib2xkIHRoYXQgYXJlIGluIHdlaXJkIHBsYWNlcyBnODByZW0sIGluY2x1ZGUgPSBGfQpoaWdobGlnaHRfc2FtcGxlcyA8LSBjKCJqdDEzMjI0IiwgImFtMTEyNiIsICJtZXMxNDE4IiwgImp0MzYyNjgiKQoKZzgwcmVtX2RhdGEgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBtdXRhdGUoaGlnaGxpZ2h0ID0gbGFiZWwgJWluJSBoaWdobGlnaHRfc2FtcGxlcykgJT4lIAogIGFzLnRyZWVkYXRhKCkgLT4gZzgwcmVtX2RhdGEKYGBgCgpgYGB7ciBwbG90dGluZyB0aGUgZzgwcmVtIHRyZWUsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTUsIGVjaG8gPSBGLCByZXN1bHRzPSdoaWRlJ30KZ2d0cmVlKGc4MHJlbV9kYXRhLCBsYWRkZXJpemUgPSBULCBzaXplID0gMC41KSArCiAgICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBHZW51c19zcGVjaWVzLCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSBpZmVsc2UoaGlnaGxpZ2h0LCAiYm9sZC5pdGFsaWMiLCAiaXRhbGljIikpLAogICAgICAgICAgICAgIHNpemUgPSA0LAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTYpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogICMgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IGxhYmVsKSwKICAjICAgICAgICAgICAgICB2anVzdCA9IC0uNSwKICAjICAgICAgICAgICAgICBzaXplID0gMykgKwogIGdlb21fcG9pbnQoCiAgICBkYXRhID0gdHJlZV9kZl9nODByZW0sCiAgICBhZXMoeCA9IHgsIHkgPSB5LCBmaWxsID0gYm9vdF9iaW4pLAogICAgc2hhcGUgPSAyMSwKICAgIHNpemUgPSAyLjUsCiAgICBzdHJva2UgPSAwLjIsCiAgICBjb2xvciA9ICJibGFjayIgICMgb3B0aW9uYWwgYm9yZGVyIGZvciB2aXNpYmlsaXR5CiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYmluX2NvbG9ycywgCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCb290c3RyYXAgJSIpICsKICAjIyBFdXJvcGUgTjg2IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gODYsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4yLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gODYsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgQXNpYSBONzkgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSA3OSwKICAgIGxhYmVsID0gIkFzaWEiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS43LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gNzksCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLCAKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBFdXJvcGUgTjc2IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gNzYsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4zLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gNzYsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgTm9ydGggQW1lcmljYSBOMTAwIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTAwLAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAyLjEsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMDAsCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLCAKICAgIHRvLmJvdHRvbSA9IFQKICApICsgCiAgIyMgTm9ydGggQW1lcmljYSBOMTE2IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTE2LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAxLjIsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMTYsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKQpgYGAKCgojIyMgR3JlYXRlciA3NSUgUmVtb3ZlZCBTcGVjaWVzCgpgYGB7ciBpbXBvcnRpbmcgZzc1cmVtIHRyZWUsIGluY2x1ZGUgPSBGfQpyZWFkLm5ld2ljayhmaWxlID0gIi9Vc2Vycy9iZW55b3VuZy9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9PbmVEcml2ZS1VQ0ItTzM2NS9wcm9qZWN0cy9hcnRodXJfdHVibWUvcmF4bWxfZzc1cmVtL1JBeE1MX2JpcGFydGl0aW9ucy50dWJtZV9zY29ncmVhdDc1cmVtXzEwMGJzIikgLT4gZzc1cmVtX2RhdGEKZzc1cmVtX2RhdGEkZWRnZS5sZW5ndGggPC0gZzc1cmVtX2RhdGEkZWRnZS5sZW5ndGggKiAxMjAKYGBgCgpgYGB7ciBhbm5vdGF0aW5nIHRyZWUgZGF0YSBnNzVyZW0sIGluY2x1ZGUgPSBGfQojIyBnZXR0aW5nIHRoZSBjb3JyZWN0IDY4IHNhbXBsZXMgZnJvbSBtZXRhZGF0YSAKZzc1cmVtX2RhdGEgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBmaWx0ZXIoc3RyX2RldGVjdChsYWJlbCwgIl5bQS1aYS16XSIpKSAlPiUgCiAgZHBseXI6OnNlbGVjdChsYWJlbCkgLT4gc2FtcGxlc19nNzUKCiMjIGNvbWJpbmluZyBtZXRhZGF0YSB3aXRoIHRyZWUgb2JqZWN0LiAKZzc1cmVtX2RhdGEgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBmdWxsX2pvaW4odHJlZV9tZCAlPiUgCiAgICAgICAgICAgICAgZHBseXI6OmZpbHRlcihzYW1wbGUgJWluJSBzYW1wbGVzX2c3NSRsYWJlbCksIAogICAgICAgICAgICBqb2luX2J5KGxhYmVsID09IHNhbXBsZSkpICU+JSAKICBhcy50cmVlZGF0YSgpIC0+IGc3NXJlbV9kYXRhCmBgYAoKYGBge3IgZzc1cmVtIG1ha2luZyB0aGUgbm9kZSBzaGFwZXMgYW5kIGNvbG91cnMsIGluY2x1ZGUgPSBGfQp0cmVlX2RmX2c3NXJlbSA8LSBmb3J0aWZ5KGc3NXJlbV9kYXRhKQoKdHJlZV9kZl9nNzVyZW0gPC0gdHJlZV9kZl9nNzVyZW0gJT4lCiAgZmlsdGVyKCFpc1RpcCAmICFpcy5uYShsYWJlbCkpICU+JQogIG11dGF0ZShib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSkgJT4lCiAgZmlsdGVyKGJvb3RzdHJhcCA+IDApICU+JSAKICBtdXRhdGUoCiAgICBib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSwKICAgIGJvb3RfYmluID0gY2FzZV93aGVuKAogICAgICBib290c3RyYXAgPj0gOTEgfiAiOTHigJMxMDAiLAogICAgICBib290c3RyYXAgPj0gODEgfiAiODHigJM5MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA3MSB+ICI3MeKAkzgwIiwKICAgICAgYm9vdHN0cmFwID49IDYxIH4gIjYx4oCTNzAiLAogICAgICBib290c3RyYXAgPj0gNTEgfiAiNTHigJM2MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA0MSB+ICI0MeKAkzUwIiwKICAgICAgYm9vdHN0cmFwID49IDMxIH4gIjMx4oCTNDAiLAogICAgICBib290c3RyYXAgPj0gMjEgfiAiMjHigJMzMCIsCiAgICAgIGJvb3RzdHJhcCA+PSAxMSB+ICIxMeKAkzIwIiwKICAgICAgVFJVRSB+ICIw4oCTMTAiCiAgICApCiAgKQojIFZpZXcodHJlZV9kZl9nNzVyZW0pCgpiaW5fY29sb3JzIDwtIGMoCiAgIjkx4oCTMTAwIiA9ICJncmV5NjAiLAogICI4MeKAkzkwIiA9ICJkYXJrYmx1ZSIsCiAgIjcx4oCTODAiID0gImJsdWUiLAogICI2MeKAkzcwIiA9ICJkb2RnZXJibHVlMyIsCiAgIjUx4oCTNjAiID0gInNreWJsdWUzIiwKICAiNDHigJM1MCIgPSAiY2hhcnRyZXVzZTQiLAogICIzMeKAkzQwIiA9ICJnb2xkZW5yb2QyIiwKICAiMjHigJMzMCIgPSAib3JhbmdlIiwKICAiMTHigJMyMCIgPSAib3JhbmdlcmVkMiIsCiAgIjDigJMxMCIgICA9ICJyZWQiCikKYGBgCgpgYGB7ciBnZXR0aW5nIG5vZGVsYWJzIGZvciBiZXR0ZXIgcGxvdCBnNzUsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTUsIGluY2x1ZGUgPSBGfQpnZ3RyZWUoZzc1cmVtX2RhdGEsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gQ29udGluZW50LCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgc2l6ZSA9IDMsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxNCkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IG5vZGUpLAogICAgICAgICAgICAgICBzaXplID0gNCkKYGBgCgpgYGB7ciBtYWtpbmcgc2FtcGxlcyBib2xkIHRoYXQgYXJlIGluIHdlaXJkIHBsYWNlcyBnNzVyZW0sIGluY2x1ZGUgPSBGfQpoaWdobGlnaHRfc2FtcGxlcyA8LSBjKCJqdDEzMjI0IiwgImFtMTEyNiIsICJtZXMxNDE4IiwgImp0MzYyNjgiLCAiZmxhczYxOTYxIikKCmc3NXJlbV9kYXRhICU+JSAKICBhc190aWJibGUoKSAlPiUgCiAgbXV0YXRlKGhpZ2hsaWdodCA9IGxhYmVsICVpbiUgaGlnaGxpZ2h0X3NhbXBsZXMpICU+JSAKICBhcy50cmVlZGF0YSgpIC0+IGc3NXJlbV9kYXRhCmBgYAoKYGBge3IgcGxvdHRpbmcgdGhlIGc3NXJlbSB0cmVlLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdndHJlZShnNzVyZW1fZGF0YSwgbGFkZGVyaXplID0gVCwgc2l6ZSA9IDAuNSkgKwogICAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gR2VudXNfc3BlY2llcywgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gaWZlbHNlKGhpZ2hsaWdodCwgImJvbGQuaXRhbGljIiwgIml0YWxpYyIpKSwKICAgICAgICAgICAgICBzaXplID0gNCwKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE2KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICAjIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBsYWJlbCksCiAgIyAgICAgICAgICAgICAgdmp1c3QgPSAtLjUsCiAgIyAgICAgICAgICAgICAgc2l6ZSA9IDMpICsKICBnZW9tX3BvaW50KAogICAgZGF0YSA9IHRyZWVfZGZfZzc1cmVtLAogICAgYWVzKHggPSB4LCB5ID0geSwgZmlsbCA9IGJvb3RfYmluKSwKICAgIHNoYXBlID0gMjEsCiAgICBzaXplID0gMi41LAogICAgc3Ryb2tlID0gMC4yLAogICAgY29sb3IgPSAiYmxhY2siICAjIG9wdGlvbmFsIGJvcmRlciBmb3IgdmlzaWJpbGl0eQogICkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJpbl9jb2xvcnMsIAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiQm9vdHN0cmFwICUiKSArCiAgIyMgRXVyb3BlIE4xMDQgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMDQsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4yLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTA0LAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKwogICMjIEFzaWEgTjk3IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gOTcsCiAgICBsYWJlbCA9ICJBc2lhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuNywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDk3LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgRXVyb3BlIE4xMTggQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMTgsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMS4zLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTE4LAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkgKwogICMjIE5vcnRoIEFtZXJpY2EgTjExOSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDExOSwKICAgIGxhYmVsID0gIk5vcnRoIEFtZXJpY2EiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMi4xLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTE5LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywgCiAgICB0by5ib3R0b20gPSBUCiAgKSArIAogICMjIE5vcnRoIEFtZXJpY2EgTjcyIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gNzIsCiAgICBsYWJlbCA9ICJOb3J0aCBBbWVyaWNhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDEuMiwKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDcyLAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsIAogICAgdG8uYm90dG9tID0gVAogICkKYGBgCgoKU28gd2l0aCByZW1vdmluZyB0aGUgbG93IG9ydGhvZ3JvdXAgc3BlY2llcyB0aGlzIHRyZWUgaXMgbG9va2luZyB3YXkgYmV0dGVyIChmcm9tIG15IGJpb2luZm9ybWF0aWMgcG9pbnQsIGJpb2xvZ2ljYWxseSBJIGhhdmUgbm8gaWRlYSBzb3JycnJycnkgbG9sKS4gIAoKLSBUaGUgc3VwcG9ydCBmb3IgdGhlIG91dGdyb3VwIGFuZCBldmVyeXRoaW5nIGVsc2UgaXMgcHJldHR5IGxvdyB3aGljaCBpcyBpbnRlcmVzdGluZy4gIAotIEFzIHdlIGluY3JlYXNlIG9ydGhvZ3JvdXBzICh0aHJvdWdoID54JSBzcGVjaWVzKSBpdCBzZWVtcyB0aGUgdHJlZSBob2xkcyB0aGUgc2FtZSBzaGFwZSBhbmQgc29tZSBvZiB0aGUgbG93IGJvb3RzdHJhcHMgYnVtcCB1cC4KLSBBY3R1YWxseSwgaXQgc2VlbXMgZ3JlYXRlciA4NSUgc2VlbXMgdG8gZ2l2ZSB0aGUgaGlnaGVzdCBib290c3RyYXAgc3VwcG9ydCBmb3IgdGhlIHRyZWVzLiAgCgoKIyMgQlVTQ08gUUMgb2YgUmUtbWFkZSBHZW5vbWVzIAoKT2theSBzbyBJIGhhdmUgcnVuIHRyaW1taW5nLCB0aGUgcHJva2FyeW90aWMgYW5kIHZpcmFsIGNvbnRhbWluYXRpb24gKHdpdGggYml0IHNjb3JlcyAxNTAgYW5kIDIwMCksIGFuZCBhbHNvIHJlbW92ZWQgY29udGlncyA8IDUwMGJwLiBJIHVzZWQgdGhlIDE1MCBhbmQgMjAwIGlucHV0IGZvciBCVVNDTyB3aXRoIHRoZSBgZnVuZ2lfb2RiMTJgIGFuZCBgYXNjb215Y290YV9vZGIxMmAgZGF0YWJhc2VzLiAKCmBgYHtyIHJlYWRpbmcgaW4gYnVzY28gYW5kIG1ha2luZyBkZnMsIGluY2x1ZGUgPSBGfQpyZWFkLmNzdihmaWxlID0gIi9Vc2Vycy9iZW55b3VuZy9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9PbmVEcml2ZS1VQ0ItTzM2NS9wcm9qZWN0cy9hcnRodXJfdHVibWUvYXNtX3BpcGVsaW5lL2J1c2NvX3N1bW1hcnkudHN2IiwgCiAgICAgICAgIHNlcCA9ICJcdCIpIC0+IGJ1c2NvX3JlcwoKYnVzY29fcmVzICU+JSAKICBkcGx5cjo6ZmlsdGVyKERhdGFiYXNlICVpbiUgImZ1bmciKSAlPiUgCiAgZHBseXI6Om11dGF0ZShUb3RhbCA9IDExMjIpICU+JQogIGRwbHlyOjpmaWx0ZXIoIU1lYXN1cmUgJWluJSBjKCJDb21wbGV0ZSIsICJUb3RhbCIpKSAlPiUgCiAgZHBseXI6Om11dGF0ZShQZXJjZW50YWdlID0gKFZhbHVlL1RvdGFsKSoxMDApIC0+IGJ1c2NvX2Z1bmcKCmJ1c2NvX3JlcyAlPiUgCiAgZHBseXI6OmZpbHRlcihEYXRhYmFzZSAlaW4lICJhc2NvIikgJT4lIAogIGRwbHlyOjptdXRhdGUoVG90YWwgPSAyODI2KSAlPiUKICBkcGx5cjo6ZmlsdGVyKCFNZWFzdXJlICVpbiUgYygiQ29tcGxldGUiLCAiVG90YWwiKSkgJT4lIAogIGRwbHlyOjptdXRhdGUoUGVyY2VudGFnZSA9IChWYWx1ZS9Ub3RhbCkqMTAwKSAtPiBidXNjb19hc2NvCmBgYAoKYGBge3IgcGxvdHRpbmcgZnVuZ2kgQlVTQ08gRE5BLCBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD0yMCwgZWNobyA9IEYsIHJlc3VsdHM9J2hpZGUnfQpnZ3Bsb3QoZGF0YSA9IGJ1c2NvX2Z1bmcsIAogICAgICAgYWVzKHkgPSBQZXJjZW50YWdlLCAKICAgICAgICAgICB4ID0gU2FtcGxlLCAKICAgICAgICAgICBmaWxsID0gTWVhc3VyZSwgCiAgICAgICAgICAgbGFiZWwgPSBQZXJjZW50YWdlKSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiLCAKICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX3N0YWNrKHJldmVyc2UgPSBUKSkgKwogIHRoZW1lX2J3KCkgKyAKICBjb29yZF9mbGlwKCkgKwogIHNjYWxlX3hfZGlzY3JldGUoZXhwYW5kID0gYygwLDApKSArIAogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBjKCIwJSIsICIyMCUiLCAiNDAlIiwgIjYwJSIsICI4MCUiLCAiMTAwJSIpLCAKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gYygwLCAyMCwgNDAsIDYwLCA4MCwgMTAwKSwgCiAgICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IGMoMCwwKSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKG5hbWUgPSAiYnVzY29fbWVhc3VyZSIsIAogICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoInN0ZWVsYmx1ZTEiLCAic3RlZWxibHVlNCIsICJ5ZWxsb3czIiwgInJlZDMiKSkgKyAKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9MTAsIGZhbWlseSA9ICJBcmlhbCIpKSArIAogIGdndGl0bGUoIkJVU0NPIFJlc3VsdHMgLSBGdW5naV9vZGIxMiBEYXRhYmFzZSIpCmBgYAoKYGBge3IgcGxvdHRpbmcgYXNjbyBCVVNDTyBETkEsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTIwLCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdncGxvdChkYXRhID0gYnVzY29fYXNjbywgCiAgICAgICBhZXMoeSA9IFBlcmNlbnRhZ2UsIAogICAgICAgICAgIHggPSBTYW1wbGUsIAogICAgICAgICAgIGZpbGwgPSBNZWFzdXJlLCAKICAgICAgICAgICBsYWJlbCA9IFBlcmNlbnRhZ2UpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIAogICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fc3RhY2socmV2ZXJzZSA9IFQpKSArCiAgdGhlbWVfYncoKSArIAogIGNvb3JkX2ZsaXAoKSArCiAgc2NhbGVfeF9kaXNjcmV0ZShleHBhbmQgPSBjKDAsMCkpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGMoIjAlIiwgIjIwJSIsICI0MCUiLCAiNjAlIiwgIjgwJSIsICIxMDAlIiksIAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBjKDAsIDIwLCA0MCwgNjAsIDgwLCAxMDApLCAKICAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gYygwLDApKSArCiAgc2NhbGVfZmlsbF9tYW51YWwobmFtZSA9ICJidXNjb19tZWFzdXJlIiwgCiAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYygic3RlZWxibHVlMSIsICJzdGVlbGJsdWU0IiwgInllbGxvdzMiLCAicmVkMyIpKSArIAogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZT0xMCwgZmFtaWx5ID0gIkFyaWFsIikpICsgCiAgZ2d0aXRsZSgiQlVTQ08gUmVzdWx0cyAtIEFzY295bWNvdGFfb2RiMTIgRGF0YWJhc2UiKQpgYGAKClRoaW5ncyB0byBub3RlCjEpIFRoZSAxMDAgdmVyc3VzIDIwMCBkb2VzIG5vdCByZWFsbHkgaW1wYWN0IHNjb3JlcyBhdCBhbGwuIFRoZXJmb3JlLCBsZXRzIGdvIHdpdGggdGhlIDIwMCBmaWx0ZXIuIAoyKSBUaGVzZSB3ZXJlIG5ldmVyIGdvaW5nIHRvIGJlIGhpZ2ggYmVjYXVzZSBvZiB0aGUgRE5BIGV4dHJhY3Rpb24gYW5kIGFtcGxpZmljYXRpb24geW91IGRpZC4gVGhlIGZhY3QgdGhleSBhbGwgc2ltaWxhciBhbmQgYXJvdW5kIDEwJSBpcyBnb29kLiAKMikgQSBmZXcgdGhpbmdzIGZhaWwvZG8gbm90IGFzc2VtYmxlLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZXNlLiBOb3RlIHRoZXNlIGFyZSBhbHNvIHRoZSBvbmVzIHJlbW92ZWQgZnJvbSB0aGUgb3JpZ2luYWwgYW5hbHlzaXMgZHVlIHRvIHRoZW0gaGF2aW5nIHRvIGZldyBvcnRob2dyb3Vwcy4gIAoKQWxzbyBub3QgaW5jbHVkZWQgYXJlIHRoZSBvbmVzIHdoaWNoIGRpZCBub3QgcGFzcyB0aGUgY2xlYW5pbmcgb2YgNTAwYnAgICAKLSAqdHV0ZXgqIC0+IHRoaXMgaGFkIGNvbnRpZ3Mgb25seSA8NTAwLCBzbyB0aGVyZSBpcyBub3RoaW5nIGluIHRoZSBjbGVhbmVkIGFuZCBzb3J0ZWQgZmFzdGEgZmlsZS4gIAotICphZzM0MCogLT4gdGhpcyBoYWQgY29udGlncyBvbmx5IDw1MDAsIHNvIHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlIGNsZWFuZWQgYW5kIHNvcnRlZCBmYXN0YSBmaWxlLiAgCi0gKmp0NDQ1MyogLT4gdGhpcyBoYWQgY29udGlncyBvbmx5IDw1MDAsIHNvIHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlIGNsZWFuZWQgYW5kIHNvcnRlZCBmYXN0YSBmaWxlLiAgCgoKIyMgUmUtZG9uZSBHZW5lIHByZWRpY3Rpb25zIFJBWE1MCgpXZSBoYXZlIGEgdG90YWwgb2YgODQgc3BlY2llcyB0aGF0IHdvcmtlZCB0aHJvdWdoIGdlbmUgcHJlZGljdGlvbiBBTkQgKGV2ZW4gd2l0aCBvbmVzIHdpdGggPDEwMDAgZ2VuZXMpIHdlIHN0aWxsIGdvdCByZWFsbHkgZ29vZCBTQ09zIGJldHdlZW4gYWxsIHNwZWNpZXMuICAKCkkgZGlkIGEgcHJlbGltaW5hcnkgYW5hbHlzaXMsIGFuZCB0aGUgdGhyZWUgc2FtcGxlcyAocmg3MjIsIHJoMTAwNiwgYWczMzUpIG1hZGUgYSB3ZWlyZCBncm91cCBzbyB3ZSBoYXZlIHJlbW92ZWQgdGhlbS4gQWxzbyByb290ZWQgb24gdGhyZWUgc3BlY2llcyBhbmQgdGhpcyBpcyB3aGF0IGl0IGdhdmUuCgpgYGB7ciBnZXR0aW5nIG5ldyBncCBtZXRhZGF0YSwgaW5jbHVkZSA9IEZ9CnJlYWQuY3N2KGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS9hc21fcGlwZWxpbmUvdHJlZV9tZXRhZGF0YS5jc3YiKSAlPiUgCiAgbXV0YXRlKGFjcm9zcyh3aGVyZShpcy5jaGFyYWN0ZXIpLCB+bmFfaWYoLiwgIiIpKSkgJT4lIAogIG11dGF0ZShHZW51c19zcGVjaWVzX2dvb2QgPSBzdHJfcmVwbGFjZV9hbGwoR2VudXNfc3BlY2llcywgIl8iLCAiICIpKSAlPiUgCiAgbXV0YXRlKHRpcGxhYmVsID0gcGFzdGUwKHNhbXBsZSwgIiB8ICIsIEdlbnVzX3NwZWNpZXNfZ29vZCwgIiB8ICIsIExvY2F0aW9uKSkgLT4gdHJlZV9tZF9ncApgYGAKCgojIyMgQWxsIFNDTyB3aXRoIFRocmVlIFJvb3QKClNvIHdoZW4gdXNpbmcgdGhlIHR3byBzcGVjaWVzIEFydGh1ciB3YW50ZWQgZm9yIHJvb3RpbmcgaXQgd2FzIGEgbGl0dGxlIHdlaXJkIChpLmUuIGNhbnQgZmluZCBhcyB0aGVpciBpcyBhbm90aGVyIHNwZWNpZXMgaW4gdGhlcmUgbWVzc2luZyBpdCB1cCkuIFRoZSB0cmVlIGFib3ZlIHNob3dzIHRoZXJlIGFyZSB0aHJlZSAqKlRpYmVyIHNwaW5vcmV0aWN1bGF0dW0qKiBzbyBtYXliZSB1c2luZyBhbGwgdGhyZWUgd2lsbCBmaXggdGhlIHJvb3RpbmcgcHJvYmxlbS4gKFNwb2lsZXIsIGl0IGRvZXMpLiBSZW1vdmVkIHRob3NlIG9sZCB3ZWlyZCB0cmVlcyBzbyBub3cgaXQgaXMganVzdCB0aGUgZ29vZCBvbmVzIHdpdGggcm9vdGluZyB3aXRoIHRoZSB0aHJlZSBzcGVjaWVzLiAKCk51bWJlciBvZiBzcGVjaWVzOiA4MApOdW1iZXIgb2YgU0NPOiA2OSAobmlpaWlpaWNlKQpDb25jYXRlbmF0aW9uIGxlbmd0aDogNDIsOTExIGJwCgpgYGB7ciBpbXBvcnRpbmcgYWxsIHRocmVlIHJvb3QgdHJlZSwgaW5jbHVkZSA9IEZ9CnJlYWQubmV3aWNrKGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS9hc21fcGlwZWxpbmUvcmF4bWxfYWxsL1JBeE1MX2JpcGFydGl0aW9ucy50dWJtZV9zY29hbGxfMTAwYnNfM3Jvb3QiKSAtPiBhbGxfZGF0YV8zCmFsbF9kYXRhXzMkZWRnZS5sZW5ndGggPC0gYWxsX2RhdGFfMyRlZGdlLmxlbmd0aCAqIDEyMApgYGAKCmBgYHtyIGFubm90YXRpbmcgdHJlZSBkYXRhIGFsbCB0aHJlZSByb290LCBpbmNsdWRlID0gRn0KYWxsX2RhdGFfMyAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIGZpbHRlcihzdHJfZGV0ZWN0KGxhYmVsLCAiXltBLVphLXpdIikpICU+JSAKICBkcGx5cjo6c2VsZWN0KGxhYmVsKSAtPiBzYW1wbGVzX2FsbAoKYWxsX2RhdGFfMyAlPiUgCiAgYXNfdGliYmxlKCkgJT4lCiAgZnVsbF9qb2luKHRyZWVfbWRfZ3AgJT4lIAogICAgICAgICAgICAgIGRwbHlyOjpmaWx0ZXIoc2FtcGxlICVpbiUgc2FtcGxlc19hbGwkbGFiZWwpLCAKICAgICAgICAgICAgam9pbl9ieShsYWJlbCA9PSBzYW1wbGUpKSAlPiUKICBhcy50cmVlZGF0YSgpIC0+IGFsbF9kYXRhXzMKYGBgCgpgYGB7ciBhbGwgdGhyZWUgcm9vdCBtYWtpbmcgdGhlIG5vZGUgc2hhcGVzIGFuZCBjb2xvdXJzLCBpbmNsdWRlID0gRn0KYWxsX2RhdGFfZGZfMyA8LSBmb3J0aWZ5KGFsbF9kYXRhXzMpCgphbGxfZGF0YV9kZl8zIDwtIGFsbF9kYXRhX2RmXzMgJT4lCiAgZmlsdGVyKCFpc1RpcCAmICFpcy5uYShsYWJlbCkpICU+JSAKICBtdXRhdGUoYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCkpICU+JQogIGZpbHRlcihib290c3RyYXAgPiAwKSAlPiUgCiAgbXV0YXRlKAogICAgYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCksCiAgICBib290X2JpbiA9IGNhc2Vfd2hlbigKICAgICAgYm9vdHN0cmFwID49IDkxIH4gIjkx4oCTMTAwIiwKICAgICAgYm9vdHN0cmFwID49IDgxIH4gIjgx4oCTOTAiLAogICAgICBib290c3RyYXAgPj0gNzEgfiAiNzHigJM4MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA2MSB+ICI2MeKAkzcwIiwKICAgICAgYm9vdHN0cmFwID49IDUxIH4gIjUx4oCTNjAiLAogICAgICBib290c3RyYXAgPj0gNDEgfiAiNDHigJM1MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAzMSB+ICIzMeKAkzQwIiwKICAgICAgYm9vdHN0cmFwID49IDIxIH4gIjIx4oCTMzAiLAogICAgICBib290c3RyYXAgPj0gMTEgfiAiMTHigJMyMCIsCiAgICAgIFRSVUUgfiAiMOKAkzEwIgogICAgKQogICkKIyBWaWV3KHRyZWVfZGZfODApCgpiaW5fY29sb3JzIDwtIGMoCiAgIjkx4oCTMTAwIiA9ICJncmV5NjAiLAogICI4MeKAkzkwIiA9ICJkYXJrYmx1ZSIsCiAgIjcx4oCTODAiID0gImJsdWUiLAogICI2MeKAkzcwIiA9ICJkb2RnZXJibHVlMyIsCiAgIjUx4oCTNjAiID0gInNreWJsdWUzIiwKICAiNDHigJM1MCIgPSAiY2hhcnRyZXVzZTQiLAogICIzMeKAkzQwIiA9ICJnb2xkZW5yb2QyIiwKICAiMjHigJMzMCIgPSAib3JhbmdlIiwKICAiMTHigJMyMCIgPSAib3JhbmdlcmVkMiIsCiAgIjDigJMxMCIgICA9ICJyZWQiCikKYGBgCgpgYGB7ciBhbGwgdGhyZWUgcm9vdCBnZXR0aW5nIG5vZGVsYWJzIGZvciBiZXR0ZXIgcGxvdCwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQgPSAxNSwgaW5jbHVkZSA9IEZ9CmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IENvbnRpbmVudCwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCgpnZ3RyZWUoYWxsX2RhdGFfMywgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBsYWJlbCwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCgpnZ3RyZWUoYWxsX2RhdGFfMywgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBMb2NhdGlvbiwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCmBgYAoKYGBge3IgbWFraW5nIHNhbXBsZXMgYm9sZCB0aGF0IGFyZSBpbiB3ZWlyZCBwbGFjZXMgYWxsIHRocmVlIHJvb3QsIGluY2x1ZGUgPSBGfQpoaWdobGlnaHRfc2FtcGxlcyA8LSBjKCJqdDEzMjI0IiwgInZrNDUzOCIsICJhbTExMjYiLCAianQzNjI2OCIsICJ0cjY0IiwgInJoODQ3IiwgIm1lczE0MTgiKQoKYWxsX2RhdGFfMyAlPiUKICBhc190aWJibGUoKSAlPiUKICBtdXRhdGUoaGlnaGxpZ2h0ID0gbGFiZWwgJWluJSBoaWdobGlnaHRfc2FtcGxlcykgJT4lCiAgYXMudHJlZWRhdGEoKSAtPiBhbGxfZGF0YV8zCmBgYAoKYGBge3IgcGxvdHRpbmcgdGhlIGFsbCB0aHJlZSByb290IHRyZWUsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTcsIGVjaG8gPSBGLCByZXN1bHRzPSdoaWRlJ30KZ2d0cmVlKGFsbF9kYXRhXzMsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gdGlwbGFiZWwsCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gaWZlbHNlKGhpZ2hsaWdodCwgImJvbGQuaXRhbGljIiwgIml0YWxpYyIpKSwKICAgICAgICAgICAgICBzaXplID0gNCwKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE2KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICAjIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBsYWJlbCksCiAgIyAgICAgICAgICAgICAgdmp1c3QgPSAtLjUsCiAgIyAgICAgICAgICAgICAgc2l6ZSA9IDMpICsKICBnZW9tX3BvaW50KAogICAgZGF0YSA9IGFsbF9kYXRhX2RmXzMsCiAgICBhZXMoeCA9IHgsIHkgPSB5LCBmaWxsID0gYm9vdF9iaW4pLAogICAgc2hhcGUgPSAyMSwKICAgIHNpemUgPSAyLjUsCiAgICBzdHJva2UgPSAwLjIsCiAgICBjb2xvciA9ICJibGFjayIgICMgb3B0aW9uYWwgYm9yZGVyIGZvciB2aXNpYmlsaXR5CiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYmluX2NvbG9ycywgCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCb290c3RyYXAgJSIpICsKICAjIyBFdXJvcGUgTjExOSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDExOSwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjMsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMTksCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBBc2lhIE4xMTIgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMTIsCiAgICBsYWJlbCA9ICJBc2lhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDMuNywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDExMiwKICAgIGZpbGwgPSAiZ3JleTYwIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgTm9ydGggQW1lcmljYSBOODYgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSA4NiwKICAgIGxhYmVsID0gIk5vcnRoIEFtZXJpY2EiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gNCwKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDg2LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAgICMjIE5vcnRoIEFtZXJpY2EgTjE0MSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDEzNywKICAgIGxhYmVsID0gIk5vcnRoIEFtZXJpY2EiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gNCwKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDEzNywKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkKYGBgCgoKIyMjIEdyZWF0ZXIgOTUlIE9ydGhvbG9ncwoKTnVtYmVyIG9mIHNwZWNpZXM6IDgwICAKTnVtYmVyIG9mIFNDTzogMzEwICAKQ29uY2F0ZW5hdGlvbiBsZW5ndGg6IDIwMiw3MzYgYnAgIAoKYGBge3IgaW1wb3J0aW5nIGc5NSB0aHJlZSByb290IHRyZWUsIGluY2x1ZGUgPSBGfQpyZWFkLm5ld2ljayhmaWxlID0gIi9Vc2Vycy9iZW55b3VuZy9MaWJyYXJ5L0Nsb3VkU3RvcmFnZS9PbmVEcml2ZS1VQ0ItTzM2NS9wcm9qZWN0cy9hcnRodXJfdHVibWUvYXNtX3BpcGVsaW5lL3JheG1sX2c5NS9SQXhNTF9iaXBhcnRpdGlvbnMudHVibWVfc2NvZzk1XzEwMGJzXzNyb290IikgLT4gYWxsX2RhdGFfMwphbGxfZGF0YV8zJGVkZ2UubGVuZ3RoIDwtIGFsbF9kYXRhXzMkZWRnZS5sZW5ndGggKiAxMjAKYGBgCgpgYGB7ciBhbm5vdGF0aW5nIHRyZWUgZGF0YSBnOTUgdGhyZWUgcm9vdCwgaW5jbHVkZSA9IEZ9CmFsbF9kYXRhXzMgJT4lIAogIGFzX3RpYmJsZSgpICU+JSAKICBmaWx0ZXIoc3RyX2RldGVjdChsYWJlbCwgIl5bQS1aYS16XSIpKSAlPiUgCiAgZHBseXI6OnNlbGVjdChsYWJlbCkgLT4gc2FtcGxlc19hbGwKCmFsbF9kYXRhXzMgJT4lIAogIGFzX3RpYmJsZSgpICU+JQogIGZ1bGxfam9pbih0cmVlX21kX2dwICU+JSAKICAgICAgICAgICAgICBkcGx5cjo6ZmlsdGVyKHNhbXBsZSAlaW4lIHNhbXBsZXNfYWxsJGxhYmVsKSwgCiAgICAgICAgICAgIGpvaW5fYnkobGFiZWwgPT0gc2FtcGxlKSkgJT4lCiAgYXMudHJlZWRhdGEoKSAtPiBhbGxfZGF0YV8zCmBgYAoKYGBge3IgZzk1IHRocmVlIHJvb3QgbWFraW5nIHRoZSBub2RlIHNoYXBlcyBhbmQgY29sb3VycywgaW5jbHVkZSA9IEZ9CmFsbF9kYXRhX2RmXzMgPC0gZm9ydGlmeShhbGxfZGF0YV8zKQoKYWxsX2RhdGFfZGZfMyA8LSBhbGxfZGF0YV9kZl8zICU+JQogIGZpbHRlcighaXNUaXAgJiAhaXMubmEobGFiZWwpKSAlPiUgCiAgbXV0YXRlKGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpKSAlPiUKICBmaWx0ZXIoYm9vdHN0cmFwID4gMCkgJT4lIAogIG11dGF0ZSgKICAgIGJvb3RzdHJhcCA9IGFzLm51bWVyaWMobGFiZWwpLAogICAgYm9vdF9iaW4gPSBjYXNlX3doZW4oCiAgICAgIGJvb3RzdHJhcCA+PSA5MSB+ICI5MeKAkzEwMCIsCiAgICAgIGJvb3RzdHJhcCA+PSA4MSB+ICI4MeKAkzkwIiwKICAgICAgYm9vdHN0cmFwID49IDcxIH4gIjcx4oCTODAiLAogICAgICBib290c3RyYXAgPj0gNjEgfiAiNjHigJM3MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA1MSB+ICI1MeKAkzYwIiwKICAgICAgYm9vdHN0cmFwID49IDQxIH4gIjQx4oCTNTAiLAogICAgICBib290c3RyYXAgPj0gMzEgfiAiMzHigJM0MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAyMSB+ICIyMeKAkzMwIiwKICAgICAgYm9vdHN0cmFwID49IDExIH4gIjEx4oCTMjAiLAogICAgICBUUlVFIH4gIjDigJMxMCIKICAgICkKICApCiMgVmlldyh0cmVlX2RmXzgwKQoKYmluX2NvbG9ycyA8LSBjKAogICI5MeKAkzEwMCIgPSAiZ3JleTYwIiwKICAiODHigJM5MCIgPSAiZGFya2JsdWUiLAogICI3MeKAkzgwIiA9ICJibHVlIiwKICAiNjHigJM3MCIgPSAiZG9kZ2VyYmx1ZTMiLAogICI1MeKAkzYwIiA9ICJza3libHVlMyIsCiAgIjQx4oCTNTAiID0gImNoYXJ0cmV1c2U0IiwKICAiMzHigJM0MCIgPSAiZ29sZGVucm9kMiIsCiAgIjIx4oCTMzAiID0gIm9yYW5nZSIsCiAgIjEx4oCTMjAiID0gIm9yYW5nZXJlZDIiLAogICIw4oCTMTAiICAgPSAicmVkIgopCmBgYAoKYGBge3IgZzk1IHRocmVlIHJvb3QgZ2V0dGluZyBub2RlbGFicyBmb3IgYmV0dGVyIHBsb3QsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTUsIGluY2x1ZGUgPSBGfQpnZ3RyZWUoYWxsX2RhdGFfMywgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBDb250aW5lbnQsIAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICAgICAgICBzaXplID0gMywKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE4KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbm9kZSksCiAgICAgICAgICAgICAgIHNpemUgPSA0KQoKZ2d0cmVlKGFsbF9kYXRhXzMsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gbGFiZWwsIAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICAgICAgICBzaXplID0gMywKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE4KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbm9kZSksCiAgICAgICAgICAgICAgIHNpemUgPSA0KQoKZ2d0cmVlKGFsbF9kYXRhXzMsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gTG9jYXRpb24sIAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiKSwKICAgICAgICAgICAgICBzaXplID0gMywKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE4KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbm9kZSksCiAgICAgICAgICAgICAgIHNpemUgPSA0KQpgYGAKCmBgYHtyIG1ha2luZyBzYW1wbGVzIGJvbGQgdGhhdCBhcmUgaW4gd2VpcmQgcGxhY2VzIGc5NSB0aHJlZSByb290LCBpbmNsdWRlID0gRn0KaGlnaGxpZ2h0X3NhbXBsZXMgPC0gYygianQzNjI2OCIsICJqdDEzMjI0IiwgImFtMTEyNiIsICJyaDg0NyIsICJtZXMxNDE4IikKCmFsbF9kYXRhXzMgJT4lCiAgYXNfdGliYmxlKCkgJT4lCiAgbXV0YXRlKGhpZ2hsaWdodCA9IGxhYmVsICVpbiUgaGlnaGxpZ2h0X3NhbXBsZXMpICU+JQogIGFzLnRyZWVkYXRhKCkgLT4gYWxsX2RhdGFfMwpgYGAKCmBgYHtyIHBsb3R0aW5nIHRoZSBnOTUgdGhyZWUgcm9vdCB0cmVlLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE3LCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IHRpcGxhYmVsLAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9IGlmZWxzZShoaWdobGlnaHQsICJib2xkLml0YWxpYyIsICJpdGFsaWMiKSksCiAgICAgICAgICAgICAgc2l6ZSA9IDQsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxNikgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbGFiZWwpLAogICMgICAgICAgICAgICAgIHZqdXN0ID0gLS41LAogICMgICAgICAgICAgICAgIHNpemUgPSAzKSArCiAgZ2VvbV9wb2ludCgKICAgIGRhdGEgPSBhbGxfZGF0YV9kZl8zLAogICAgYWVzKHggPSB4LCB5ID0geSwgZmlsbCA9IGJvb3RfYmluKSwKICAgIHNoYXBlID0gMjEsCiAgICBzaXplID0gMi41LAogICAgc3Ryb2tlID0gMC4yLAogICAgY29sb3IgPSAiYmxhY2siICAjIG9wdGlvbmFsIGJvcmRlciBmb3IgdmlzaWJpbGl0eQogICkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJpbl9jb2xvcnMsIAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiQm9vdHN0cmFwICUiKSArCiAgIyMgRXVyb3BlIE4xMzAgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMzAsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMy4zLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTMwLAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgQXNpYSBOMTUxIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTUxLAogICAgbGFiZWwgPSAiQXNpYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjcsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxNTEsCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkgKwojIyBFdXJvcGUgTjE0OSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDE0OSwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjcsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxNDksCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBOb3J0aCBBbWVyaWNhIE44NSBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDg1LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSA0LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gODUsCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkgKwogICAgIyMgTm9ydGggQW1lcmljYSBOMTA3IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTA3LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSA0LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTA3LAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKQpgYGAKCgojIyMgR3JlYXRlciA5MCUgT3J0aG9sb2dzCgpOdW1iZXIgb2Ygc3BlY2llczogODAgIApOdW1iZXIgb2YgU0NPOiAzNzAgIApDb25jYXRlbmF0aW9uIGxlbmd0aDogMjM5LDg2NCBicCAgCgpgYGB7ciBpbXBvcnRpbmcgZzkwIHRocmVlIHJvb3QgdHJlZSwgaW5jbHVkZSA9IEZ9CnJlYWQubmV3aWNrKGZpbGUgPSAiL1VzZXJzL2JlbnlvdW5nL0xpYnJhcnkvQ2xvdWRTdG9yYWdlL09uZURyaXZlLVVDQi1PMzY1L3Byb2plY3RzL2FydGh1cl90dWJtZS9hc21fcGlwZWxpbmUvcmF4bWxfZzkwL1JBeE1MX2JpcGFydGl0aW9ucy50dWJtZV9zY29nOTBfMTAwYnNfM3Jvb3QiKSAtPiBhbGxfZGF0YV8zCmFsbF9kYXRhXzMkZWRnZS5sZW5ndGggPC0gYWxsX2RhdGFfMyRlZGdlLmxlbmd0aCAqIDEyMApgYGAKCmBgYHtyIGFubm90YXRpbmcgdHJlZSBkYXRhIGc5MCB0aHJlZSByb290LCBpbmNsdWRlID0gRn0KYWxsX2RhdGFfMyAlPiUgCiAgYXNfdGliYmxlKCkgJT4lIAogIGZpbHRlcihzdHJfZGV0ZWN0KGxhYmVsLCAiXltBLVphLXpdIikpICU+JSAKICBkcGx5cjo6c2VsZWN0KGxhYmVsKSAtPiBzYW1wbGVzX2FsbAoKYWxsX2RhdGFfMyAlPiUgCiAgYXNfdGliYmxlKCkgJT4lCiAgZnVsbF9qb2luKHRyZWVfbWRfZ3AgJT4lIAogICAgICAgICAgICAgIGRwbHlyOjpmaWx0ZXIoc2FtcGxlICVpbiUgc2FtcGxlc19hbGwkbGFiZWwpLCAKICAgICAgICAgICAgam9pbl9ieShsYWJlbCA9PSBzYW1wbGUpKSAlPiUKICBhcy50cmVlZGF0YSgpIC0+IGFsbF9kYXRhXzMKYGBgCgpgYGB7ciBnOTAgdGhyZWUgcm9vdCBtYWtpbmcgdGhlIG5vZGUgc2hhcGVzIGFuZCBjb2xvdXJzLCBpbmNsdWRlID0gRn0KYWxsX2RhdGFfZGZfMyA8LSBmb3J0aWZ5KGFsbF9kYXRhXzMpCgphbGxfZGF0YV9kZl8zIDwtIGFsbF9kYXRhX2RmXzMgJT4lCiAgZmlsdGVyKCFpc1RpcCAmICFpcy5uYShsYWJlbCkpICU+JSAKICBtdXRhdGUoYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCkpICU+JQogIGZpbHRlcihib290c3RyYXAgPiAwKSAlPiUgCiAgbXV0YXRlKAogICAgYm9vdHN0cmFwID0gYXMubnVtZXJpYyhsYWJlbCksCiAgICBib290X2JpbiA9IGNhc2Vfd2hlbigKICAgICAgYm9vdHN0cmFwID49IDkxIH4gIjkx4oCTMTAwIiwKICAgICAgYm9vdHN0cmFwID49IDgxIH4gIjgx4oCTOTAiLAogICAgICBib290c3RyYXAgPj0gNzEgfiAiNzHigJM4MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA2MSB+ICI2MeKAkzcwIiwKICAgICAgYm9vdHN0cmFwID49IDUxIH4gIjUx4oCTNjAiLAogICAgICBib290c3RyYXAgPj0gNDEgfiAiNDHigJM1MCIsCiAgICAgIGJvb3RzdHJhcCA+PSAzMSB+ICIzMeKAkzQwIiwKICAgICAgYm9vdHN0cmFwID49IDIxIH4gIjIx4oCTMzAiLAogICAgICBib290c3RyYXAgPj0gMTEgfiAiMTHigJMyMCIsCiAgICAgIFRSVUUgfiAiMOKAkzEwIgogICAgKQogICkKIyBWaWV3KHRyZWVfZGZfODApCgpiaW5fY29sb3JzIDwtIGMoCiAgIjkx4oCTMTAwIiA9ICJncmV5NjAiLAogICI4MeKAkzkwIiA9ICJkYXJrYmx1ZSIsCiAgIjcx4oCTODAiID0gImJsdWUiLAogICI2MeKAkzcwIiA9ICJkb2RnZXJibHVlMyIsCiAgIjUx4oCTNjAiID0gInNreWJsdWUzIiwKICAiNDHigJM1MCIgPSAiY2hhcnRyZXVzZTQiLAogICIzMeKAkzQwIiA9ICJnb2xkZW5yb2QyIiwKICAiMjHigJMzMCIgPSAib3JhbmdlIiwKICAiMTHigJMyMCIgPSAib3JhbmdlcmVkMiIsCiAgIjDigJMxMCIgICA9ICJyZWQiCikKYGBgCgpgYGB7ciBnOTAgdGhyZWUgcm9vdCBnZXR0aW5nIG5vZGVsYWJzIGZvciBiZXR0ZXIgcGxvdCwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQgPSAxNSwgaW5jbHVkZSA9IEZ9CmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IENvbnRpbmVudCwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCgpnZ3RyZWUoYWxsX2RhdGFfMywgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBsYWJlbCwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCgpnZ3RyZWUoYWxsX2RhdGFfMywgCiAgICAgICBsYWRkZXJpemUgPSBULCAKICAgICAgIHNpemUgPSAwLjUpICsKICBnZW9tX3RpcGxhYihhZXMobGFiZWwgPSBMb2NhdGlvbiwgCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIpLAogICAgICAgICAgICAgIHNpemUgPSAzLAogICAgICAgICAgICAgIGFsaWduID0gRiwKICAgICAgICAgICAgICBmYW1pbHkgPSAidGltZXMiKSArCiAgeGxpbSgtMSwgMTgpICsKICBnZW9tX3Jvb3RlZGdlKHJvb3RlZGdlID0gMSkgKwogIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBub2RlKSwKICAgICAgICAgICAgICAgc2l6ZSA9IDQpCmBgYAoKYGBge3IgbWFraW5nIHNhbXBsZXMgYm9sZCB0aGF0IGFyZSBpbiB3ZWlyZCBwbGFjZXMgZzkwIHRocmVlIHJvb3QsIGluY2x1ZGUgPSBGfQpoaWdobGlnaHRfc2FtcGxlcyA8LSBjKCJqdDEzMjI0IiwgImFtMTEyNiIsICJyaDg0NyIsICJtZXMxNDE4IikKCmFsbF9kYXRhXzMgJT4lCiAgYXNfdGliYmxlKCkgJT4lCiAgbXV0YXRlKGhpZ2hsaWdodCA9IGxhYmVsICVpbiUgaGlnaGxpZ2h0X3NhbXBsZXMpICU+JQogIGFzLnRyZWVkYXRhKCkgLT4gYWxsX2RhdGFfMwpgYGAKCmBgYHtyIHBsb3R0aW5nIHRoZSBnOTAgdGhyZWUgcm9vdCB0cmVlLCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE3LCBlY2hvID0gRiwgcmVzdWx0cz0naGlkZSd9CmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IHRpcGxhYmVsLAogICAgICAgICAgICAgICAgICBmb250ZmFjZSA9IGlmZWxzZShoaWdobGlnaHQsICJib2xkLml0YWxpYyIsICJpdGFsaWMiKSksCiAgICAgICAgICAgICAgc2l6ZSA9IDQsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxNikgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgIyBnZW9tX25vZGVsYWIoYWVzKHggPSBicmFuY2gsIGxhYmVsID0gbGFiZWwpLAogICMgICAgICAgICAgICAgIHZqdXN0ID0gLS41LAogICMgICAgICAgICAgICAgIHNpemUgPSAzKSArCiAgZ2VvbV9wb2ludCgKICAgIGRhdGEgPSBhbGxfZGF0YV9kZl8zLAogICAgYWVzKHggPSB4LCB5ID0geSwgZmlsbCA9IGJvb3RfYmluKSwKICAgIHNoYXBlID0gMjEsCiAgICBzaXplID0gMi41LAogICAgc3Ryb2tlID0gMC4yLAogICAgY29sb3IgPSAiYmxhY2siICAjIG9wdGlvbmFsIGJvcmRlciBmb3IgdmlzaWJpbGl0eQogICkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJpbl9jb2xvcnMsIAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiQm9vdHN0cmFwICUiKSArCiAgIyMgRXVyb3BlIE4xNDMgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxNDMsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMy4zLAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTQzLAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgQXNpYSBOMTMzIENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTMzLAogICAgbGFiZWwgPSAiQXNpYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjcsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMzMsCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkgKwojIyBFdXJvcGUgTjE0MCBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDE0MCwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjcsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxNDAsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKIyMgRXVyb3BlIE4xMzEgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMzEsCiAgICBsYWJlbCA9ICJFdXJvcGUiLAogICAgZm9udHNpemUgPSA2LAogICAgYWxpZ24gPSBGLAogICAgb2Zmc2V0ID0gMy43LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTMxLAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiAgIyMgTm9ydGggQW1lcmljYSBOMTA3IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTA3LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSA0LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTA3LAogICAgZmlsbCA9ICJncmV5NjAiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAgICMjIE5vcnRoIEFtZXJpY2EgTjg1IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gODUsCiAgICBsYWJlbCA9ICJOb3J0aCBBbWVyaWNhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDQsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSA4NSwKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkKYGBgCgoKIyMjIEdyZWF0ZXIgODUlIE9ydGhvbG9ncwoKTnVtYmVyIG9mIHNwZWNpZXM6IDgwICAKTnVtYmVyIG9mIFNDTzogMzg3ICAgCkNvbmNhdGVuYXRpb24gbGVuZ3RoOiAyNTAsMjk5IGJwICAKCmBgYHtyIGltcG9ydGluZyBnODUgdGhyZWUgcm9vdCB0cmVlLCBpbmNsdWRlID0gRn0KcmVhZC5uZXdpY2soZmlsZSA9ICIvVXNlcnMvYmVueW91bmcvTGlicmFyeS9DbG91ZFN0b3JhZ2UvT25lRHJpdmUtVUNCLU8zNjUvcHJvamVjdHMvYXJ0aHVyX3R1Ym1lL2FzbV9waXBlbGluZS9yYXhtbF9nODUvUkF4TUxfYmlwYXJ0aXRpb25zLnR1Ym1lX3Njb2c4NV8xMDBic18zcm9vdCIpIC0+IGFsbF9kYXRhXzMKYWxsX2RhdGFfMyRlZGdlLmxlbmd0aCA8LSBhbGxfZGF0YV8zJGVkZ2UubGVuZ3RoICogMTUwCmBgYAoKYGBge3IgYW5ub3RhdGluZyB0cmVlIGRhdGEgZzg1IHRocmVlIHJvb3QsIGluY2x1ZGUgPSBGfQphbGxfZGF0YV8zICU+JSAKICBhc190aWJibGUoKSAlPiUgCiAgZmlsdGVyKHN0cl9kZXRlY3QobGFiZWwsICJeW0EtWmEtel0iKSkgJT4lIAogIGRwbHlyOjpzZWxlY3QobGFiZWwpIC0+IHNhbXBsZXNfYWxsCgphbGxfZGF0YV8zICU+JSAKICBhc190aWJibGUoKSAlPiUKICBmdWxsX2pvaW4odHJlZV9tZF9ncCAlPiUgCiAgICAgICAgICAgICAgZHBseXI6OmZpbHRlcihzYW1wbGUgJWluJSBzYW1wbGVzX2FsbCRsYWJlbCksIAogICAgICAgICAgICBqb2luX2J5KGxhYmVsID09IHNhbXBsZSkpICU+JQogIGFzLnRyZWVkYXRhKCkgLT4gYWxsX2RhdGFfMwpgYGAKCmBgYHtyIGc4NSB0aHJlZSByb290IG1ha2luZyB0aGUgbm9kZSBzaGFwZXMgYW5kIGNvbG91cnMsIGluY2x1ZGUgPSBGfQphbGxfZGF0YV9kZl8zIDwtIGZvcnRpZnkoYWxsX2RhdGFfMykKCmFsbF9kYXRhX2RmXzMgPC0gYWxsX2RhdGFfZGZfMyAlPiUKICBmaWx0ZXIoIWlzVGlwICYgIWlzLm5hKGxhYmVsKSkgJT4lIAogIG11dGF0ZShib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSkgJT4lCiAgZmlsdGVyKGJvb3RzdHJhcCA+IDApICU+JSAKICBtdXRhdGUoCiAgICBib290c3RyYXAgPSBhcy5udW1lcmljKGxhYmVsKSwKICAgIGJvb3RfYmluID0gY2FzZV93aGVuKAogICAgICBib290c3RyYXAgPj0gOTEgfiAiOTHigJMxMDAiLAogICAgICBib290c3RyYXAgPj0gODEgfiAiODHigJM5MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA3MSB+ICI3MeKAkzgwIiwKICAgICAgYm9vdHN0cmFwID49IDYxIH4gIjYx4oCTNzAiLAogICAgICBib290c3RyYXAgPj0gNTEgfiAiNTHigJM2MCIsCiAgICAgIGJvb3RzdHJhcCA+PSA0MSB+ICI0MeKAkzUwIiwKICAgICAgYm9vdHN0cmFwID49IDMxIH4gIjMx4oCTNDAiLAogICAgICBib290c3RyYXAgPj0gMjEgfiAiMjHigJMzMCIsCiAgICAgIGJvb3RzdHJhcCA+PSAxMSB+ICIxMeKAkzIwIiwKICAgICAgVFJVRSB+ICIw4oCTMTAiCiAgICApCiAgKQojIFZpZXcodHJlZV9kZl84MCkKCmJpbl9jb2xvcnMgPC0gYygKICAiOTHigJMxMDAiID0gImdyZXk2MCIsCiAgIjgx4oCTOTAiID0gImRhcmtibHVlIiwKICAiNzHigJM4MCIgPSAiYmx1ZSIsCiAgIjYx4oCTNzAiID0gImRvZGdlcmJsdWUzIiwKICAiNTHigJM2MCIgPSAic2t5Ymx1ZTMiLAogICI0MeKAkzUwIiA9ICJjaGFydHJldXNlNCIsCiAgIjMx4oCTNDAiID0gImdvbGRlbnJvZDIiLAogICIyMeKAkzMwIiA9ICJvcmFuZ2UiLAogICIxMeKAkzIwIiA9ICJvcmFuZ2VyZWQyIiwKICAiMOKAkzEwIiAgID0gInJlZCIKKQpgYGAKCmBgYHtyIGc4NSB0aHJlZSByb290IGdldHRpbmcgbm9kZWxhYnMgZm9yIGJldHRlciBwbG90LCBmaWcud2lkdGggPSAxNSwgZmlnLmhlaWdodCA9IDE1LCBpbmNsdWRlID0gRn0KZ2d0cmVlKGFsbF9kYXRhXzMsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gQ29udGluZW50LCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgc2l6ZSA9IDMsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxOCkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IG5vZGUpLAogICAgICAgICAgICAgICBzaXplID0gNCkKCmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IGxhYmVsLCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgc2l6ZSA9IDMsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxOCkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IG5vZGUpLAogICAgICAgICAgICAgICBzaXplID0gNCkKCmdndHJlZShhbGxfZGF0YV8zLCAKICAgICAgIGxhZGRlcml6ZSA9IFQsIAogICAgICAgc2l6ZSA9IDAuNSkgKwogIGdlb21fdGlwbGFiKGFlcyhsYWJlbCA9IExvY2F0aW9uLCAKICAgICAgICAgICAgICAgICAgZm9udGZhY2UgPSAiaXRhbGljIiksCiAgICAgICAgICAgICAgc2l6ZSA9IDMsCiAgICAgICAgICAgICAgYWxpZ24gPSBGLAogICAgICAgICAgICAgIGZhbWlseSA9ICJ0aW1lcyIpICsKICB4bGltKC0xLCAxOCkgKwogIGdlb21fcm9vdGVkZ2Uocm9vdGVkZ2UgPSAxKSArCiAgZ2VvbV9ub2RlbGFiKGFlcyh4ID0gYnJhbmNoLCBsYWJlbCA9IG5vZGUpLAogICAgICAgICAgICAgICBzaXplID0gNCkKYGBgCgpgYGB7ciBtYWtpbmcgc2FtcGxlcyBib2xkIHRoYXQgYXJlIGluIHdlaXJkIHBsYWNlcyBnODUgdGhyZWUgcm9vdCwgaW5jbHVkZSA9IEZ9CmhpZ2hsaWdodF9zYW1wbGVzIDwtIGMoImp0MTMyMjQiLCAiYW0xMTI2IiwgInJoODQ3IiwgIm1lczE0MTgiKQoKYWxsX2RhdGFfMyAlPiUKICBhc190aWJibGUoKSAlPiUKICBtdXRhdGUoaGlnaGxpZ2h0ID0gbGFiZWwgJWluJSBoaWdobGlnaHRfc2FtcGxlcykgJT4lCiAgYXMudHJlZWRhdGEoKSAtPiBhbGxfZGF0YV8zCmBgYAoKYGBge3IgcGxvdHRpbmcgdGhlIGc4NSB0aHJlZSByb290IHRyZWUsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0ID0gMTcsIGVjaG8gPSBGLCByZXN1bHRzPSdoaWRlJ30KZ2d0cmVlKGFsbF9kYXRhXzMsIAogICAgICAgbGFkZGVyaXplID0gVCwgCiAgICAgICBzaXplID0gMC41KSArCiAgZ2VvbV90aXBsYWIoYWVzKGxhYmVsID0gdGlwbGFiZWwsCiAgICAgICAgICAgICAgICAgIGZvbnRmYWNlID0gaWZlbHNlKGhpZ2hsaWdodCwgImJvbGQuaXRhbGljIiwgIml0YWxpYyIpKSwKICAgICAgICAgICAgICBzaXplID0gNCwKICAgICAgICAgICAgICBhbGlnbiA9IEYsCiAgICAgICAgICAgICAgZmFtaWx5ID0gInRpbWVzIikgKwogIHhsaW0oLTEsIDE4KSArCiAgZ2VvbV9yb290ZWRnZShyb290ZWRnZSA9IDEpICsKICAjIGdlb21fbm9kZWxhYihhZXMoeCA9IGJyYW5jaCwgbGFiZWwgPSBsYWJlbCksCiAgIyAgICAgICAgICAgICAgdmp1c3QgPSAtLjUsCiAgIyAgICAgICAgICAgICAgc2l6ZSA9IDMpICsKICBnZW9tX3BvaW50KAogICAgZGF0YSA9IGFsbF9kYXRhX2RmXzMsCiAgICBhZXMoeCA9IHgsIHkgPSB5LCBmaWxsID0gYm9vdF9iaW4pLAogICAgc2hhcGUgPSAyMSwKICAgIHNpemUgPSAyLjUsCiAgICBzdHJva2UgPSAwLjIsCiAgICBjb2xvciA9ICJibGFjayIgICMgb3B0aW9uYWwgYm9yZGVyIGZvciB2aXNpYmlsaXR5CiAgKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYmluX2NvbG9ycywgCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJCb290c3RyYXAgJSIpICsKICAjIyBFdXJvcGUgTjEyMiBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDEyMiwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjMsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMjIsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBBc2lhIE4xMTIgQ29sb3VyaW5nCiAgZ2VvbV9jbGFkZWxhYigKICAgIG5vZGUgPSAxMTIsCiAgICBsYWJlbCA9ICJBc2lhIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDMuNywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDExMiwKICAgIGZpbGwgPSAiZ3JleTYwIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKSArCiMjIEV1cm9wZSBOMTE5IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTE5LAogICAgbGFiZWwgPSAiRXVyb3BlIiwKICAgIGZvbnRzaXplID0gNiwKICAgIGFsaWduID0gRiwKICAgIG9mZnNldCA9IDMuNywKICAgIG9mZnNldC50ZXh0ID0gMC4wNSwKICAgIHRleHRjb2xvciA9ICdibGFjaycsCiAgICBiYXJjb2xvciA9ICdkYXJrZ3JleScsCiAgICBmYW1pbHkgPSAidGltZXMiCiAgKSArCiAgZ2VvbV9oaWxpZ2h0KAogICAgbm9kZSA9IDExOSwKICAgIGZpbGwgPSAic3RlZWxibHVlMiIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkgKwojIyBFdXJvcGUgTjExMCBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDExMCwKICAgIGxhYmVsID0gIkV1cm9wZSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSAzLjcsCiAgICBvZmZzZXQudGV4dCA9IDAuMDUsCiAgICB0ZXh0Y29sb3IgPSAnYmxhY2snLAogICAgYmFyY29sb3IgPSAnZGFya2dyZXknLAogICAgZmFtaWx5ID0gInRpbWVzIgogICkgKwogIGdlb21faGlsaWdodCgKICAgIG5vZGUgPSAxMTAsCiAgICBmaWxsID0gInN0ZWVsYmx1ZTIiLAogICAgdHlwZSA9ICJncmFkaWVudCIsCiAgICBncmFkaWVudC5kaXJlY3Rpb24gPSAncnQnLAogICAgYWxwaGEgPSAuMywKICAgIHRvLmJvdHRvbSA9IFQKICApICsKICAjIyBOb3J0aCBBbWVyaWNhIE44NiBDb2xvdXJpbmcKICBnZW9tX2NsYWRlbGFiKAogICAgbm9kZSA9IDg2LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSA0LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gODYsCiAgICBmaWxsID0gImdyZXk2MCIsCiAgICB0eXBlID0gImdyYWRpZW50IiwKICAgIGdyYWRpZW50LmRpcmVjdGlvbiA9ICdydCcsCiAgICBhbHBoYSA9IC4zLAogICAgdG8uYm90dG9tID0gVAogICkgKwogICAgIyMgTm9ydGggQW1lcmljYSBOMTM3IENvbG91cmluZwogIGdlb21fY2xhZGVsYWIoCiAgICBub2RlID0gMTM3LAogICAgbGFiZWwgPSAiTm9ydGggQW1lcmljYSIsCiAgICBmb250c2l6ZSA9IDYsCiAgICBhbGlnbiA9IEYsCiAgICBvZmZzZXQgPSA0LAogICAgb2Zmc2V0LnRleHQgPSAwLjA1LAogICAgdGV4dGNvbG9yID0gJ2JsYWNrJywKICAgIGJhcmNvbG9yID0gJ2RhcmtncmV5JywKICAgIGZhbWlseSA9ICJ0aW1lcyIKICApICsKICBnZW9tX2hpbGlnaHQoCiAgICBub2RlID0gMTM3LAogICAgZmlsbCA9ICJzdGVlbGJsdWUyIiwKICAgIHR5cGUgPSAiZ3JhZGllbnQiLAogICAgZ3JhZGllbnQuZGlyZWN0aW9uID0gJ3J0JywKICAgIGFscGhhID0gLjMsCiAgICB0by5ib3R0b20gPSBUCiAgKQpgYGAKCgojIyBCZW4gVG8gRG8gCgpTbyBJIHRoaW5rIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBzdGVwcyBzaG91bGQgYmUgZG9uZS4gCgotIFJlYXNzZW1ibGUgZGF0YSwgcHJvZ3JhbXMgaGF2ZSB1cGRhdGVkIHdpdGggYmV0dGVyIGFsZ29yaXRobXMgc28gaXQgbWF5IG1ha2UgYmV0dGVyIGFzc2VtYmxpZXMKLSBQcmlvciB0byBhc3NlbWJseSwgcnVuIHRyaW1tZWQgcmVhZHMgdGhyb3VnaCBhIGJhY3RlcmlhbCBhbmQgdmlyYWwgYmxhc3Qgc2NyZWVuIGFuZCByZW1vdmFsIGJhc2VkIG9uIGJpdCBzY29yZXMuICAKLSBCVVNDTyBhbmFseXNpcyBvZiBhbGwgYXNzZW1ibGllcyB0byBnZXQgc29tZSBhc20gc3RhdHMuIEJldHRlciB0aGFuIGp1c3QgYXNzZW1ibGluZyBhbmQgdGhyb3dpbmcgaW50byBhIGRvd25zdHJlYW0gYW5hbHlzaXMuICAKLSBBbnkgb3RoZXIgaWRlYXMuICAKCiAKIyMgUXVlc3Rpb25zIGFuZCBBbnN3ZXJzIGZyb20gQXJ0aHVyIC0gMjIgSnVseSAyMDI1IAoKMS4gV2hhdCBtZXRob2Qgd2FzIHVzZWQgZm9yIGxpYnJhcnkgcHJlcCBhbmQgc2VxdWVuY2luZy4gCi0gTW9kaWZpZWQgQ1RBQiBwaGVub2wgY2hsb3Jmb3JtIHByb3RvY29sLiAgCi0gUk5BIGJhaXRzIHRvIGh5YnJpZGl6ZSBhcmVzIG9mIGludGVyZXN0LiAgCi0gTWFnbmV0aWMgYmVhZCBzdGFuZCB0byBwdWxsIGFuZCBkbyB3YXNoZXMgYW5kIHRoZW4gbGlicmFyeSBwcmVwcGVkLiAgCi0gTmV4dGVyYSBETkEgRmxleCBsaWJyYXJ5IHByZXAgKGxvdyBjb25jcykuICAKLSBNaS1TZXEgcnVuIGZvciB0aGUgcmF3IHJlYWRzIChQRTE1MCBmcm9tIGBmYXN0cWNgIHJlcG9ydCkuICAKCjIuIFdoYXQgd2FzIHRoZSBvcmlnaW5hbCBhc3NlbWJseSBjb21tYW5kIHdpdGggc3BhZGVzID8KLSBpdCBpcyBpbiBgL3BsL2FjdGl2ZS9mdW5naTEvYXJncjY3MjNfMi0xNS0yMS9SdWZ1bV9UQy9Bc3NlbWJsaWVzX1NQQWRlc2AuICAKLSByYW4gdHJpbW1vbWF0aWMgYXMgd2VsbC4gIAoKMi4gV2hlcmUgYXJlIHRoZSByYXcgcmVhZHMKLSBObyByYXcgcmVhZHMgYW55bW9yZSA6LCguICAKLSBUaGlzIGhhcyB0cmltbWVkIHJhdyByZWFkcyAtIGAvcGwvYWN0aXZlL2Z1bmdpMS9hcmdyNjcyM18yLTE1LTIxL1J1ZnVtX1RDL2FyY2hpdmUudGFyYC4gIAoKMy4gV2hhdCBkaWQgeW91IHNlcXVlbmNlOiBwdXJlIGN1bHR1cmVzLCBkaXJ0eSBzYW1wbGVzLCBldGMuIGV0Yy4gIAotIE11c3VlbSBIZXJiYXJpdW0gc2FtcGxlcyBhbmQgZHJpZWQuIDEgeWVhciB0byAxMTAgeWVhcnMuICAKCjQuIElmIGRpcnR5IHNhbXBsZXMsIGRpZCB5b3UgZG8gYSBwcm9rYXJ5b3RpYy92aXJhbC9tZXRhem9hbiBjbGVhbmluZyBiZWZvcmUgYXNzZW1ibHk/Ci0gTm8gY2xlYW5pbmcgc3RlcCwganVzdCBmbGFnIGZvciBtZXRhIGdlbm9tZS4gIAotIFJ1biBjdXN0b21lIHByb2sgYW5kIHZpcmFsIGJsYXN0IGFuYWx5c2lzIHByaW9yIHRvIGFzc2VtYmx5LiAgCi0gVHVseSBnZW5vbWUsIDExMC8xMTQgeWVhcnMgSU1QT1JUQU5UIChhbmQgaGFzIGdvb2Qgb3J0aG9ncm91cHMsIGdyZWF0IHN1Y2Nlc3MpLiAgCi0gUmUgYXNzZW1ibGUgd2l0aCB1cGRhdGVkIHByb2dyYW1zLiAgCgo1LiBGcm9tIHRoZSBkYXRhIHdlIGhhdmUsIHRoZXJlIGFyZSBzcGVjaWVzIHdpdGggbm8gb3J0aG9sb2dzIHJlYWxseSAoc2VlIGV4Y2VsKS4gCi0gQWxpc2hhIHNhaWQgdG8gd29yayBkb3duIHBhaXJ3aXNlIGZvciBvcnRob2xvZ3MuICAKLSBEbyBldmVyeSA1JSBvcnRob2xvZ3MgaW4gc3BlY2llcyBmcm9tIDkwJSB0byA1MCUgKHRoYXRzIG5pbmUgdHJlZXMpLiAgCgo2LiBJZiBJIG1ha2UgYSBzcHJlYWRzaGVldCB3aXRoIGFsbCB0aGUgbmFtZXMgKGkuZS4gYWcyMTMsIGpmMTEzNiBldGMuKSBjYW4geW91IGZpbGwgaW4gdGhlIGNvbHVtbiBpbm9ybWF0aW9uIGZvciBtZS4gCi0gQXJ0aHVyIHdpbGwgZG8geWF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5LiAgCgo3LiBUaGluZ3MgdG8gcmVtb3ZlIChpLmUuIHJlcnVuIGV2ZXJ5dGhpbmcgZnJvbSBwcm90b3J0aG8gb253YXJkcyB3aXRoIHRoZXNlIHJlbW92ZWQpLiAKLSByaDEwMDYuICAKLSByaDcyMi4gIAotIGc0NzQwLiAgCi0gVHVibWUxdjIuICAKCjguIFJvb3Rpbmcgb24gdGhlIHRyZWUgd2lsbCBiZSB3aGljaCBzcGVjaWVzIAotIHJoMTk4OC4gIAotIGFnMzQyLiAgCi0gcmg3MjEuICAKCg==